0621NAME IS NULL2022/12/18(日) 18:15:53.08ID:ixe6oE+R Excel VBAでもオブジェクトの破棄をしてなさそう データがないとわかっていれば、無駄な処理がなくなることを理解していないなら、RDBの説明をしても意味がない
空文字列がNULLになるのではなく、空文字列をNULLと見做す仕様を理解していないままOracleDBを使っているのは頭がおかしいとしか言えない。 0622NAME IS NULL2022/12/18(日) 18:16:34.62ID:ixe6oE+R>>620 ありえない。 あんた初心者すぎる。 0623NAME IS NULL2022/12/18(日) 18:22:47.91ID:??? さすがのオラクルでも設計ミスだと認めてるのに いつも上から目線の低スキル信者は空文字とNULLの区別もできないクソ仕様を必死に養護しててテラワロス 0624NAME IS NULL2022/12/18(日) 18:30:36.96ID:???>>621 もしかして関数から戻る直前にも Set S = Nothing とかの意味ないノウハウを信奉してたりしてw
>>622 具体的にしてき出来ないならとっとと遁走しなよ... 痛々しいぞ 0625NAME IS NULL2022/12/18(日) 18:32:35.43ID:ixe6oE+R>>624 関数とは言わない 自己流の言葉や思い込みが自分をダメにする 0626NAME IS NULL2022/12/18(日) 18:33:23.08ID:ixe6oE+R>>623 コッド自身が空はNULLといったん言ってしまてた。 0627NAME IS NULL2022/12/18(日) 18:35:02.24ID:ixe6oE+R 空文字列という概念は1980年代以降に生まれたもの
1980年代はその空文字列もデータが大きくなるから、当然のように嫌われている。 0628NAME IS NULL2022/12/18(日) 18:37:34.48ID:???>>626 妄想じゃなければソース出してね 0629NAME IS NULL2022/12/18(日) 18:50:46.26ID:???>>625 Function って言えってか? そういう所にしか突っ込めないとか情けなくならないの? 0630NAME IS NULL2022/12/18(日) 18:59:05.54ID:???>>627 >空文字列もデータが大きくなるから うそですやんww こういう所が低レベルと言われる所以 0631NAME IS NULL2022/12/18(日) 19:40:58.90ID:??? そもそも1960年代のLISPでも空文字列とnull(LISPではNIL)は区別されてるから >>627 > 空文字列という概念は1980年代以降に生まれたもの 自体が大嘘だし 0632NAME IS NULL2022/12/19(月) 11:32:20.09ID:H4gqv1ey>>631 それは空文字列ではなく、データ構造の話だろw 0633NAME IS NULL2022/12/19(月) 11:33:40.26ID:H4gqv1ey OracleDBに難癖をつけるやつが集まってくるほど人気になるとは思わなかったな。 0634NAME IS NULL2022/12/19(月) 11:34:05.91ID:H4gqv1ey>>629 VBAはファンクションプロシージャと呼ぶ 0635NAME IS NULL2022/12/19(月) 11:36:30.48ID:H4gqv1ey>>630 空文字列はメモリを確保している状態。データファイルだと終端文字が格納されている状態。 0636NAME IS NULL2022/12/19(月) 11:38:51.55ID:H4gqv1ey VBにはサブプロシージャとファンクションプロシージャというものがある。
用語が不正確なやつは無知をさらしているだけ。 0637NAME IS NULL2022/12/19(月) 16:48:29.28ID:???>>632 データ構造じゃねーよ、LISPのデータ構造はS式しかない 数値などと同じく文字列が存在するんだよ 0638NAME IS NULL2022/12/19(月) 16:50:06.86ID:???>>634,636 マジでそんな突っ込みして恥ずかしくないの?w まあ話しそらそうと必死なんだろうけど 0639NAME IS NULL2022/12/19(月) 17:31:13.83ID:??? おっ、やってるやってる! 0640NAME IS NULL2022/12/19(月) 21:13:25.97ID:???>>635 さすがボラクルくんw 無知なだけじゃなく頭が悪いww 終端文字www 0641NAME IS NULL2022/12/20(火) 18:20:05.91ID:GPbhHUoK NULLの存在意義が少しはわかってきたかな? 0642NAME IS NULL2022/12/20(火) 18:24:05.59ID:GPbhHUoK 文字列はフェッチして終端まで行って、空だったと判定するのと
文字列をフェチしてすぐにNULLと判断できるデータが入っている
前者は無能極まりない 0643NAME IS NULL2022/12/20(火) 18:27:01.66ID:GPbhHUoK>>637 自分で文字列というものはないと言っている 文字列は文字列という概念を初めから持ったプログラミング言語やデータベースのことをいう。
メモリのデータが文字、連続したメモリのアドレスに格納されているデータが文字というのは文字列という概念を持っているプログラミング言語ではない。 0644NAME IS NULL2022/12/20(火) 18:35:04.68ID:GPbhHUoK 文字列が格納されているメモリの先頭アドレスに文字列長を持たせるのも同じように思うかもしれないが、
ゴッド博士のデータベースの考え方は、値がないなら値がないとはっきりわかるようにすべきというもの。
空文字列を用意すると、空文字列に特定の意味を持たせる使い方をされるので、これは空文字列、空文字列、空文字列と騒いでいるやつのように製品としては何も制御できなくなる。 0645NAME IS NULL2022/12/20(火) 18:49:33.88ID:???>>643 > 自分で文字列というものはないと言っている はあ? どこでそんなアホなこと言ってるんだよ
Rule 3: Systematic Treatment of NULL Values NULL values (distinct from empty character string or a string of blank characters and distinct from zero or any other number) are supported in the fully relational RDBMS for representing missing information in a systematic way, independent of data type. 0647NAME IS NULL2022/12/21(水) 14:55:02.80ID:??? >644 >空文字列を用意すると、(略)製品としては何も制御できなくなる 世にある大半のRDBMSではちゃんと空文字列をNULLと区別して制御してるんだが? 世にある大半のプログラム言語では、空文字列とヌルポは別物なんだが?
コッドはオラクル社と、一部のユーザーの意見を慌てて混ぜ込んだので、よくわからないものになった。 0664NAME IS NULL2022/12/27(火) 19:18:02.13ID:Nm1SClNo>>661 コッドはどのデータ型でも空が必要と考え直して、あせって空の概念を追加したから、数値の空がゼロになるという失敗をおかした。
ゼロが値のデータと、空を表現するゼロというデータの区別ができなくなった。
空文字列も同様に、空文字列が空なのか、空というデータなのか区別がつかなくなった。 0665NAME IS NULL2022/12/27(火) 19:20:10.01ID:???>>663 空文字列のほうがNULLより古い概念だと思うんだがな
つまりコッドは自分の間違いに気付いて修正したのに オラクルは修正しなかったと 0666NAME IS NULL2022/12/28(水) 00:44:53.00ID:??? おまえそんなウソをよく信じるなwww 0667NAME IS NULL2022/12/28(水) 21:08:04.43ID:??? Edgar Frank “Ted” Coddが『A Relational Model of Data for Large Shared Data Banks』を書いたのが1969年 John McCarthyがLISP 1.5を作ったのが1958年 もちろんLISP 1.5に文字列は(当然空文字列も)ある 要するに>>663は単なるアホの妄想でしかない 0668NAME IS NULL2022/12/28(水) 23:39:34.80ID:??? オラクルがおバカな設計をしたもんだからこりゃダメだと感じて 空文字とNULLは違うんだよって至極当然のことを声高に宣言して標準化することになったんだよ 0669NAME IS NULL2023/01/04(水) 16:34:41.59ID:nkfvAbjd コッドはオラクル社が製品化したことについては悪く言っていない。 空の概念は後付けなので、オラクル社が製品化したときには、まだコッドは空の概念がなかった。 0670NAME IS NULL2023/01/04(水) 17:22:14.61ID:xblv//Bh>>667 LISPおじさんは、空文字列がnilに変換されてしまうから怒っているのか。
ようやく変なこだわりが変わった。 それはLISPだけの話じゃない。
空文字列は空の文字列だから、NULLなんだよ?
わかった? 0671NAME IS NULL2023/01/04(水) 17:48:04.83ID:??? 年明け早々ガイジが沸いてて草 0672NAME IS NULL2023/01/05(木) 09:27:21.66ID:uQIDyRWM NULLは空文字列と使う側が変換すればいい話をくどくど言うやつは死ぬまで言うんだろうな。 0673NAME IS NULL2023/01/05(木) 14:58:06.50ID:??? 情報が失われてるのにどうやって変換するんだよw NULLと空文字を区別するためのカラムを別途用意するのかww 0674NAME IS NULL2023/01/05(木) 16:45:00.33ID:??? 空文字列がNULLの人に、下記2点、イエスかノーかで答えてほしい
1.空文字列は文字列として有効である 2.NULLは文字列として有効である 0675NAME IS NULL2023/01/06(金) 22:45:20.28ID:qDWOeluB NULLは値がないことだよ
空文字列は空文字列という値だよ
空文字列はいらないと言ったのは博士だよ
歴史を知らないのなら、博士の考えが揺れたことをまずは調べてね。 0676NAME IS NULL2023/01/06(金) 22:54:26.06ID:qDWOeluB OracleDBでもCLOB型なら、ロケーターがあっても中身は空文字列という状態がある。
AWSでのOracleDBとSQL Serverが選択されるようになってきた。少し前までは減っていく方向だったが、フルマネージドはバージョンをどんどん上げないといけないから、仕様が変わっていないか頻繁に確認し直さないといけない。 0685NAME IS NULL2023/01/20(金) 05:53:38.02ID:??? 脱オラクルはテクニカルな問題はあまり問題視されていないような 0686NAME IS NULL2023/01/21(土) 02:52:45.82ID:??? そりゃいまどき特定のDBMS(ORACLE)でしか使えないような機能とか、そうそうないからな 0687NAME IS NULL2023/01/21(土) 15:36:12.78ID:W/7tJ9Sa>>686 はあ? 0688NAME IS NULL2023/01/21(土) 15:37:29.54ID:W/7tJ9Sa>>686 DBMSの選定で機能比較をしたことがあるのか? ないからそんなことが言える。 0689NAME IS NULL2023/01/21(土) 21:00:31.30ID:??? Oracle だけじゃないけど SQL-Server 使ってると order by ~ nulls first は欲しいと思う 逆にちょっとした値を直書きしたい時に Oracle だと select ~ from (VALUES (1, 'one'), (2, 'two'), (3, 'three')) as t (num,letter); ってできないのが不満だわ 0690NAME IS NULL2023/01/21(土) 23:12:57.75ID:W/7tJ9Sa>>689 SQL Serverは文字の照合順序が指定できる。
そうしなくてもUNION ALLでNULLレコードを最初に持ってくるか最後に持ってくるかをSELECT文で指定できる。 0691NAME IS NULL2023/01/21(土) 23:19:08.33ID:W/7tJ9Sa>>689 ORDER BYの仕様は、OracleDBがNULLをNULL値と定義したおかげ。
キャラクタセットと文字の照合順序をORDER BYに絡ませた他のRBDMSは、性能を優先したせいで面倒な比較条件、ソート条件が仕様として残ってしまった。 0692NAME IS NULL2023/01/23(月) 20:24:57.70ID:???>>689 order by のNULLの順序は確かに指定したいときはままあるんだが、 ソートしたい項目にNULLが入ってる段階で設計間違ってる気がしないでもない
>>690-691 NULLは別に文字に限った話じゃないんだが? ちなみに >UNION ALLでNULLレコードを最初に持ってくるか最後に持ってくるかをSELECT文で指定できる。 これどうやるんだ?NULLレコードってなんだ? 0693NAME IS NULL2023/01/23(月) 20:36:47.29ID:???>>692 > ソートしたい項目にNULLが入ってる段階で設計間違ってる気がしないでもない left join の結果とかで null をどっちかに寄せたいとか
・データ ID 巻数 タイトル 1 第1巻 あいうえお 2 第2巻 かきくけこ 3 第3巻 さしすせそ ------------ このテーブルでInsert文作りたいのですが、 ID、Numberが+1ずつしていく場合、タイトル以外を自動加算させる書き方ってありますか? ------------ Insert Into テーブル (ID,Number,Title) Select MAX(ID)+1, 第???回, たちつてと From テーブル ------------ この 第???回 がわからず。。 0695NAME IS NULL2023/01/24(火) 01:03:41.31ID:CDmns3ou>>692 ソートしたカラムにNULLのレコードがあると彼は言っている。
select aaa from abc where aaa = b and aaa is not null order by aaa union all select aaa from abc where aaa = b and aaa is null; 0696NAME IS NULL2023/01/24(火) 01:04:41.14ID:CDmns3ou>>694 PL/SQLでやればいい 0697NAME IS NULL2023/01/24(火) 01:06:05.17ID:CDmns3ou>>694 select max(id) だけでも破綻しているぞ? 0698NAME IS NULL2023/01/24(火) 11:44:08.22ID:???>>695 そのSQL通るのか? すくなくともSQL Serverではunionに指定できるorder byは最後に指定して全体に適用されるものだけのはずだが サブクエリでTopとか使うなら個別のorder byは有効かもしれんが unionした結果の行の順番は(全体としてのorder byがなければ)保証されないと思うが
ORACLEならそれで全体の順序が保証されるってなら、根拠となる資料教えてくれ 0699NAME IS NULL2023/01/24(火) 13:01:51.57ID:??? 保証されるわけない ちなみにオラクルでは個別のorder byも書けない 0700NAME IS NULL2023/01/25(水) 00:21:18.55ID:???>>694 INSERT INTO ~ SELECT MAX(ID) + 1 …の形だと同時実行されたらダメじゃね? 他のDBMSと違ってオラクルだとSERIALIZABLEでもwrite skewが発生する 0701NAME IS NULL2023/01/25(水) 13:44:05.91ID:???>>700 さすがにSERIALIZABLEでそんなことが起こったらダメだろうと思うんだが WikiのSnapshot isolation のとこ見ると >Oracle は snapshot isolation のことを "serializable" と呼んでいる って書いてあるな
今回の例なら素直にシーケンス使えで良いかもしれんが トランザクション設計ちょっと考えんといかんな
どおりでみんなやたらにfor update書くわけだ 0702NAME IS NULL2023/01/25(水) 15:22:11.85ID:??? オラクルでgap freeなシーケンスって存在する? 0703NAME IS NULL2023/01/25(水) 17:59:27.93ID:???>>700 同時実行とか関係なく単にデータを生成したいだけかもしれない 0704NAME IS NULL2023/01/25(水) 23:07:49.88ID:YToOJ4zV>>698 unionとunion allはまったく別物 0705NAME IS NULL2023/01/25(水) 23:18:07.37ID:YToOJ4zV>>698 select句に対して、ひとつのorder by句が対応するという構文の仕様があるが、select文のfrom指定をインライビュー(副問い合わせ)にすれば問題ない。