アカウント名:
パスワード:
次の年号どうすんねやろと思ったらこんなんあった。
naronA @naron__A 2017-12-03 14:00:02上司「ここは処理が3つに別れるのでBooleanにtrue/false/nullを代入しまして」俺「え?Booleanですよね?」上司「うん」俺「🤔」#IT業界クソ現場オブザイヤー2017
OracleのPL/SQLのBOOLEAN型は標準で三値持てるらしいですね。 > Booleanにtrue/false/null
他の言語だと、C#ならbool?、C++ならBoost.Triboolあたり。
SQLの3値論理はTrue/False/Nullではなく、True/False/Unknownですよ。基本的なことで、意味も扱いも全く違いますから、ちゃんと勉強しましょう。
SQL99での定義はTrue/False/Unknownですが、Oracleではunknownはサポートされていないのでは?(正確には評価結果のUnknownがありますが)元コメはOracleにしか言及していないのでいきなりSQL99の話されたら困惑しますよ。
PL/SQL言語リファレンスより [oracle.com]|BOOLEAN変数に代入できる値はBOOLEAN式のみです。(中略)|SQLにはBOOLEANに相当するデータ型がないため、次の操作は実行できません。| データベース表の列にBOOLEAN値を割り当てる操作(以下略)ついでに、上記のBOOLEAN値 [oracle.com]は|BOOLEAN式とは、BOOLEAN値(—TRUE、FALSEまたはNULL)を戻す式のことです。
とのことなので、12c(12.1)で試してみたところ変数にはNULLは代入できるしis nullによる評価も可能でしたが、テーブルへのINSERTはできませんでした。
…ああ、この流れ…些細ではあるが技術の風が吹くこの流れ…これこそ古き良きスラドの風よ…!!
#すぐ政治だのネトウヨだの言いだす連中はYahooにでも行けばいいのに…。
(#3324495) の言いたいことがさっぱりわからん
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
昭和と平成 (スコア:5, おもしろおかしい)
次の年号どうすんねやろと思ったらこんなんあった。
naronA @naron__A 2017-12-03 14:00:02
上司「ここは処理が3つに別れるのでBooleanにtrue/false/nullを代入しまして」
俺「え?Booleanですよね?」
上司「うん」
俺「🤔」
#IT業界クソ現場オブザイヤー2017
Re: (スコア:0)
OracleのPL/SQLのBOOLEAN型は標準で三値持てるらしいですね。 > Booleanにtrue/false/null
他の言語だと、C#ならbool?、C++ならBoost.Triboolあたり。
Re:昭和と平成 (スコア:0)
SQLの3値論理はTrue/False/Nullではなく、True/False/Unknownですよ。
基本的なことで、意味も扱いも全く違いますから、ちゃんと勉強しましょう。
Re: (スコア:0)
SQL99での定義はTrue/False/Unknownですが、Oracleではunknownはサポートされていないのでは?(正確には評価結果のUnknownがありますが)
元コメはOracleにしか言及していないのでいきなりSQL99の話されたら困惑しますよ。
Re: (スコア:0)
(そもそもBoolean型をSQL99の通りに実装しているRDBMSは存在しない)
Boolean型をサポートしないSQLを拡張したPL/SQLはもやはSQLじゃないのでSQL99に拘束される謂れはないが
それはそうとしてPL/SQLではBoolean型変数を作れるが、その変数にはNULLを代入できない
なぜならBoolean型が必要なところでNULLを評価するとunknownになるから、 NULLを代入したつもりでも実際の値はunknownになっているはず
Re:昭和と平成 (スコア:2, 参考になる)
PL/SQL言語リファレンスより [oracle.com]
|BOOLEAN変数に代入できる値はBOOLEAN式のみです。
(中略)
|SQLにはBOOLEANに相当するデータ型がないため、次の操作は実行できません。
| データベース表の列にBOOLEAN値を割り当てる操作
(以下略)
ついでに、上記のBOOLEAN値 [oracle.com]は
|BOOLEAN式とは、BOOLEAN値(—TRUE、FALSEまたはNULL)を戻す式のことです。
とのことなので、12c(12.1)で試してみたところ変数にはNULLは代入できるしis nullによる評価も可能でしたが、テーブルへのINSERTはできませんでした。
脱線 (スコア:0)
…ああ、この流れ…些細ではあるが技術の風が吹くこの流れ…これこそ古き良きスラドの風よ…!!
#すぐ政治だのネトウヨだの言いだす連中はYahooにでも行けばいいのに…。
Re: (スコア:0)
(#3324495) の言いたいことがさっぱりわからん