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指定をインライビュー(副問い合わせ)にすれば問題ない。
副問い合わせは、現在ではあたりまえの拡張構文だけど、古い仕様があるから、わさわざ2段階にしないといけないだけ。 0718NAME IS NULL2023/01/26(木) 14:45:43.06ID:0ZdAuIEw>>716 製品マニュアルのSELECT文の構文部分を読め 難しいだろうから、しばらくは暇つぶしになるだろう。 0719NAME IS NULL2023/01/26(木) 14:49:05.23ID:0ZdAuIEw>>716 まずは冷静に読みなさい。 間違えたもの訂正したから、訂正部分をスルーしたのは私の書き方が悪いのもあるが、特定厨のくせにちゃんと見てないあなた様をちょっとおかしい。 0720NAME IS NULL2023/01/26(木) 14:52:21.72ID:0ZdAuIEw このスレは機能不全になったな。 データベース板はどのスレも書き込みがあると、他人の書き込みのアラ探しをする無職がいるようだ。
OTNの掲示板が機能していた時代でも、ネットで質問して返ってくる内容なんて変なのばかりだったぞ。
匿名をいいことに他人の書き込みをいちいちギャーギャー言うのは、本当にタチが悪い。 0721NAME IS NULL2023/01/26(木) 15:11:59.93ID:???>>718-719 ドヤ顔で頓珍漢なトランザクションのURL示せるんならselectの説明してるURL示せよ 0722NAME IS NULL2023/01/26(木) 15:22:22.59ID:0ZdAuIEw 最初に言った人がORDER BYでNULLを最初か最後かに指定できないと言ったのを、そういう仕様だったかなと思ったしまっていた
よく考えたら、OracleDBでもちゃんとNULLの並び順の指定方法があることを思い出したよ。
ORDER BY句に下記のものを書けば、NULLのカラムが最後にくるか、最初にくるか指定できる
NULLS LAST NULLS FIRST 0723NAME IS NULL2023/01/26(木) 15:27:44.63ID:???>>717 >select文のfrom指定をインライビュー(副問い合わせ)にすれば問題ない。 つまり>>695のSQLは間違ってるんだな じゃあまず正しいSQL示せ
その上で副問い合わせで指定した順序が最終の結果セットで保持されている根拠を示せ? 0724NAME IS NULL2023/01/26(木) 15:29:45.58ID:0ZdAuIEw>>723 インラインビュー内のSELECT文のソートは標準SQLで決まっているので、OracleDB固有の仕様ではない。
まあ >ネットで質問して返ってくる内容なんて変なのばかり そう思うならお前は回答するな 0727NAME IS NULL2023/01/26(木) 15:34:10.33ID:0ZdAuIEw ああそう 0728NAME IS NULL2023/01/26(木) 15:34:46.93ID:???>>722 >SQL-Server 使ってると order by 〜 nulls first は欲しいと思う に対して >UNION ALLでNULLレコードを最初に持ってくるか最後に持ってくるかをSELECT文で指定できる。 って解答がそもそもの発端なんだが、これお前の発言じゃないのか? 0729NAME IS NULL2023/01/26(木) 15:35:16.15ID:0ZdAuIEw>>726 データベース板は過疎板なんだけどな 0730NAME IS NULL2023/01/26(木) 15:36:44.39ID:0ZdAuIEw>>728 そうだったね。勘違いした。
Oracle だけじゃないけど SQL-Server 使ってると order by ~ nulls first は欲しいと思う 逆にちょっとした値を直書きしたい時に Oracle だと select ~ from (VALUES (1, 'one'), (2, 'two'), (3, 'three')) as t (num,letter); ってできないのが不満だわ 0731NAME IS NULL2023/01/26(木) 15:40:38.39ID:???>>724 標準SQLではインラインビューにORDER BYは書けなかったはずだが ちなみに、どのレベルの標準SQLだ? 標準SQLの規格書手元にないから、書けるって根拠があるなら教えて 0732NAME IS NULL2023/01/26(木) 15:41:35.97ID:0ZdAuIEw>>728 SQL Serverの場合はunion allするselect文のfrom句に副問い合わせのselectでorder byができる。
もし復旧方法わかるわかる方いらっしゃったら教えてください。 0779NAME IS NULL2023/06/14(水) 00:22:06.36ID:??? 自己解決しました。おじゃましました。 0780NAME IS NULL2023/06/14(水) 16:11:06.26ID:14/Kwe66 ORA-12560はだいたい接続設定ミスだし、そもそもリスナー経由で接続していたら、インスタンスが落ちていれば、ORA-12560になるわな。 0781NAME IS NULL2023/06/14(水) 17:18:15.48ID:??? この場合、インスタンスは落ちてないのでは? 0782NAME IS NULL2023/06/14(水) 19:41:26.23ID:??? sys dbaならSQL plus繋がりましたので ノーアーカイブモードにしてRMANでアーカイブ削除、 アーカイブモードに戻して復旧しました。 おじゃましました。 0783NAME IS NULL2023/06/14(水) 23:32:50.27ID:??? アーカイブログの削除は定期的にね 0784NAME IS NULL2023/08/17(木) 17:43:15.78ID:mNefGHHA 教えてください。 Oracle12cでDBCAを使って2つのDBを作成したのですが、2つ目のDBを作成すると1つ目に作成したDBのインスタンスが起動しなくなってしまいます。 2つ目のDB作成直後は両方のDBに接続できるのですが、1つ目のサービスを再起動するとORA-12514で繋がらなくなります。 tnspingは問題なく、lsnrctrl statusを確認すると2つ目のサービスのみ起動している状態です。 どうも2回目のセットアップで1回目の設定ファイルか何かを上書きしてしまっているのではないかと勘繰っているのですが、そんな形跡もなく 同じような症状あった方、原因わかりましたら宜しくお願い致します。 0785NAME IS NULL2023/08/18(金) 18:12:40.52ID:??? TCPポートが被ってるとかでは 0786NAME IS NULL2023/08/20(日) 21:23:14.48ID:3ABm4kAE>>785 返信ありがとうございます。何とか解決できました。 10付近のOracleのDBCAで作成するとそんな動きになってしまうようです。 https://www.shift-the-oracle.com/oracle/pfile-spfile.html この※要注意の部分に書かれていました。LRM-00109でPFILEが無いと言われてSPFILEがあるのに何でPFILE見に行ってるんだろう?とドツボにはまりましたが バックアップされていたPFILEがあったのでstartupコマンドでpfile指定したらうまく起動しました。 お騒がせしました。 0787NAME IS NULL2023/12/23(土) 00:02:57.32ID:UXD9Vkjl sqlplusでの接続が遅い場合、どのような原因が考えられるでしょうか? SQLの実行自体は早いのですが、接続に20秒ほどかかります。 半年くらい前は1秒以内に接続できてました。 07887872023/12/23(土) 00:04:27.49ID:???>>787です。 Oracle 19cです。 また、DB再起動とリスナー再起動は試しました。 0789NAME IS NULL2023/12/23(土) 07:01:55.91ID:??? 名前解決に時間がかかるとか OSIの7層モデルなんかを参考にしてどのレイヤで、どれだけ時間を要してるか計るといい 死んだDNSサービスを参照していたり、多重化したサービスが縮退していて時間がかかってるかもしれない 0790NAME IS NULL2023/12/23(土) 14:03:45.52ID:??? リスナー再起動後に接続すると待たされることはよくある。 数分後に再度試すとすんなり繋がる。 0791NAME IS NULL2023/12/23(土) 15:33:38.24ID:jR9IfpqJ>>788 tnsnames.oraのホスト指定がIPアドレスなのか、ホスト名なのかぐらい書こうよ。 0792NAME IS NULL2023/12/23(土) 15:36:34.28ID:jR9IfpqJ>>786 OracleDBはひとつのノードに複数のデータベース(CDB)を作る運用はもともと想定していない運用で、一般的ではないからな。 07937872023/12/25(月) 19:02:37.67ID:???>>789 DNSサービスが遅いか否か調査してみます。 ありがとうございます。
>>791 tnsnames.oraのホスト指定はIPアドレス指定です。 0794NAME IS NULL2024/01/15(月) 11:27:04.22ID:??? Oracle Database Gateway for ODBCをつかってSymfowareのテーブルをOracleで操作できるようにしたいんですけど設定してみたらselectはエラーなく走るんですが件数が0件で取得されます フィールドは正常に取得できているので接続自体はできていると思うのですが原因等わかる方はいますか? ちなみに、設定してあるODBCでA5:SQLを使って接続すると中身のデータも確認できます
Oracle DBのバージョンは12cR2です 0795NAME IS NULL2024/01/18(木) 18:08:37.15ID:5Fh8ou4p SELECT文のフェッチレコード数はROWCOUNTとは何も関係ない。
ROWCOUNTの件数を常に表示するツールだと、SELECTの結果が0件だと表示される。 0796NAME IS NULL2024/01/18(木) 19:33:10.39ID:???>>795 >>794です。 件数が0件と記載してましたが、問題はそこではなく中身のデータがselectできません。 osqledit,A5:SQL,sql plusのそれぞれで試しましたがORACLEで作成したDBLINK経由だとデータが取得できませんでした。 0797NAME IS NULL2024/01/19(金) 00:18:55.78ID:9hpZjc6Z 別人にかな? 0798NAME IS NULL2024/02/11(日) 22:12:19.46ID:aAn5h9VQ>>796 句読点の使い方も完全に異なるから、あなたは別人と判断した 0799NAME IS NULL2024/02/11(日) 22:18:01.74ID:aAn5h9VQ SymfowareのテーブルをOracleDBのデータベースリンクを使って検索するというネタか 0800NAME IS NULL2024/03/01(金) 16:22:48.84ID:??? わかんねぇならわかんねぇって素直に言えよカス 変なレスしてくんなゴミ 0801NAME IS NULL2024/03/01(金) 21:46:10.75ID:de+S3zuZ データベースリンクはOracleDB同士のリンクだからな 0802NAME IS NULL2024/03/01(金) 21:48:36.49ID:de+S3zuZ なんでマニュアルを見ないのかな? https://docs.oracle.com/cd/F19136_01/otgiw/config-odbc-gateway.html0803NAME IS NULL2024/03/01(金) 21:59:46.89ID:??? SEごっこして遊んでるやつはどっか行けよ そんなもん見てるに決まってんだろゴミ 何でもかんでも公式のホームページに全部の情報が載ってると思うなよクソニート そもそもその記事を見てなんでOracle同士の話だと思うんだよ 理解できてないなら黙っとけカス 0804NAME IS NULL2024/03/01(金) 22:35:30.79ID:de+S3zuZ>>803 Oracle DatabaseのデータベースリンクはOracle Database同士の接続機能だ。 0805NAME IS NULL2024/03/01(金) 22:37:58.92ID:de+S3zuZ>>803 あなたは読んでないと思うよ?
Oracle Database Gateway for ODBCは、OracleDBにただデータベースリンクを作ればいい話ではない。 0806NAME IS NULL2024/03/01(金) 22:40:55.97ID:de+S3zuZ OracleDBがデータベースリンクを介してODBCで外部と接続するというのは、書いてある通り、簡単な話ではない。