トップページprog
42コメント10KB

【衝撃】''(空文字) = NULL !?【PL/SQL】

■ このスレッドは過去ログ倉庫に格納されています
0001仕様書無しさんNGNG
これってどうなんでしょう?

1* select nvl('','NULLです。') JUDGE from dual
SQL> /

JUDGE
----------
NULLです。

空文字とNULLって違うものだと思ってましたが、
SQLだと同じになるのですか?
俺が厨房なだけですか?
あした泌尿器系の手術してきます。
0002仕様書無しさんNGNG
2げとずさ、だめ
0003仕様書無しさんNGNG
性転換ですか?
0004仕様書無しさんNGNG
ぬるって、環境によっていみがちゃうでしょ。
3げとずさ。
0005仕様書無しさんNGNG
ぐは、おそかった。
0006仕様書無しさんNGNG
包茎手術ですか?
0007仕様書無しさんNGNG
今日、バレンタインチョコ貰多、うれしかたよ。
0008仕様書無しさんNGNG
create table test
(
col1 char
,col2 char
);
なtableに
insert into test values ( '','')
して
select nvl(col1,'nullだ'),nvl(col2,'nulよ')
from test
/
NVL(CO NVL(CO
------ ------
nullだ nullよ
となった。
0009仕様書無しさんNGNG
げったーは365日24時間1分と目を離さず2chに常駐しているのか・・・
仕事しろよ
0010仕様書無しさんNGNG
>>8のつづき

1* select count(*) from test where col1 is null
SQL> /

COUNT(*)
----------
1

1* select count(*) from test where col1 =''
SQL> /

COUNT(*)
----------
0

よく分からなくなってきました。
0011仕様書無しさんNGNG
nvl()とか from dual って、Oracleか?
キモイ仕様だな。

0012仕様書無しさんNGNG
>>3
性転換ではないです。
良性の腫瘍がそのあたりにできてしまいました。

>>4
おっしゃる環境っていうのは、この場合でいうとoracleのことですか?
それともそれが載ってるOSのことですか?
厨房ですいません。
0013仕様書無しさんNGNG
タマ抜かれるんですか?
0014仕様書無しさんNGNG
>>11
Oracleです。
っていうかDBそれしか使ったこと有りません。
PostgreSQLとかやってみたいですが、、、

っていうかこれに気づかなくてどつぼにはまりました。
鬱ですが、、、
0015仕様書無しさんNGNG
>>13
抜かないと思います。
鬱になるのであまりふれないで、、、
0016仕様書無しさんNGNG
そのあたりのNULLの扱いはOracleの仕様だよ
マニュアル読め
00171NGNG
>>16
ありがとうございます。
SQLリファレンスあたり調べてみます。
00181NGNG
あった。
文字列が長さ0の場合NULLとして扱うって書いてありました。
仕様なのか、、、

16さん多謝です。
00191NGNG
将来にわたっては保証されないって書いてありますね。
oracleも疑問を持ってるってことかしら

きっとこのスレの様にそんな仕様も無くなっていくのでしょう。
0020仕様書無しさんNGNG
良性の腫瘍でもよく取っちゃうらしいけど、大丈夫?
機能に支障ないとはいえ…。
0021仕様書無しさんNGNG
標準SQLでは、NULL != "" です。
Oracleは、互換性のため未だに NULL = "" としているが、将来は標準に合わせるかも
しれないということで、将来については保証しないと言っています。
もっとも、今更変えられないでしょうが。
0022仕様書無しさんNGNG
もし>>1が経験数年以内のPGであれば、こういう疑問を持つのは、非常に正しいです。
センスがあると思います。
0023仕様書無しさんNGNG
MySQL みたく、「NULL は何と比較しても一致しない(NULL 自身とでも)」って処理系もあるからなー
0024仕様書無しさんNGNG
http://pc.2ch.net/test/read.cgi/prog/1013444598/154
ここの1って同一人物? 結局単発質問立てたんだ。

スレのタイトルがニュー速っぽい…
0025仕様書無しさんNGNG
>将来については保証しないと言っています。
んで、仕様変更が怖いから、PL・SQLでNULLチェックする時に
IF NVL(col1,'A') = 'A' then
なんてコードを書く私はDQNでしょうか?
いや、NVL関数の仕様が変わる可能性がないわけじゃないんだけど・・・
00261NGNG
>>20
今はもう支障ないと信じるしかないっす。(泣

>>22
もうすぐ3年目です。
そんなこと言われたの初めてですが、、、
きっと22さんの勘違いでしょう。いつも怒られてばっかりですから。

>>24
そしてそれは私ではありません。

それでは病院行って来ます。
0027仕様書無しさんNGNG
Sybaseでは(MS-SQLもか) '' と書くと ' '(スペース1個)に読み替えられてしまう。
気持ち悪すぎ。
0028仕様書無しさんNGNG
''をセットするより、明示的にNULLセットしろって事か?

>>27
SQL-Serverも確かそんな動き。
0029仕様書無しさんNGNG
>>1はOracle8 (Oracle8iよりも前)でしょ?
0030 ◆IE5BCalo NGNG
ちゅーかアホグラマがVBでinsert文を発行する時に

sSQL = "insert into test_t values('" & trim$(text1.text) & "' ・・・・・
とか書きやがってテーブルの整合性壊し撒くってくれたことがある。

ちなみにこれで書くとnullでヒットしないのよね。
予め入っていると分かっている場合は

SELECT 〜 WHERE COL1='' OR COL1 IS NULL
とか対応する必要がありますな。
今資料ないからわからんが、文字コードかなんかを返してくれる関数が
ある(はず)ので、それで中身見てみるのがいいのかも。

つうかバージョンで違うのかも。ちなみに自分は8.1.6だったかなー

ってこのスレ古っ
0031仕様書無しさんNGNG
よく「ヌル」「ヌル」って聞くけど

「ナル」じゃねーのかよ
0032仕様書無しさんNGNG
SQL勉強したいんですけど、いいサイトとか、フリーソフトありませんか?
0033仕様書無しさんNGNG
>>31
どちらも不正解。正解は「Null」。
でも日本語では発音出来ないので、適宜近いと思う表記をして下さい。
簡単に言えば、「どのみち違うんだから好きにしろゴルァ」ということですね。
0034仕様書無しさんNGNG
>>33
にゅる
0035仕様書無しさんNGNG
>>34
採用!
0036仕様書無しさんNGNG
にゅるにゅる
0037仕様書無しさんNGNG
>>34
アンタ天才だ!

にゅる
0038仕様書無しさんNGNG
にゅるり〜にゅるりら〜♪
0039仕様書無しさんNGNG
Nüll
0040仕様書無しさんNGNG
野球豚の巣窟(藁

http://ime.nu/www.baseball-lover.com
0041仕様書無しさんNGNG
>>33
別にこだわりはないけど
[nul]ではなく[n^l]
(発音記号がIE上適当な文字がないので[^]はAの横棒がないやつと思ってください)
cutの母音と同じ母音です。
日本語で正しく表記・発音できないとしても
「ヌル」ではなく「ナル」のほうが近いと考えます。
SF小説の題名でも「非ヌル〜」ではなく「非ナル〜」と日本語に音訳されております。
細かいところで人に馬鹿にされないようしましょう。
0042ネカマPGNGNG
日本語と英語が全く異なる発音体系のうえに構築されているうえ、
すでに日本語として定着している用語もある以上、
発音通りに表記することが即座に正しいとはいえないわ。
directoryをカタカナで書くときは「ディレクトリ[ー]」と書く以外ないでしょう?

大事なのは、ちょっとした知識の有無で他人を馬鹿にしないことだと思うわ。

あと、nullについては、ドイツ語由来の可能性も捨てきれないと思うわ。
■ このスレッドは過去ログ倉庫に格納されています