[前][次][番号順一覧][スレッド一覧]

mysql:14058

From: 忠犬 KEN公 <忠犬 KEN公 <ken_ken_1962@xxxxxxxxxx>>
Date: Sun, 17 Jun 2007 09:13:45 +0900
Subject: [mysql 14058] Re: null が文字列"(null)"になる件

誤解があるように思います。

「null」 と「長さ=0の文字」は、別の値です。

例えば、
列c1に「''」を格納した場合、「c1 is null」ではヒットしません。
「c1 is not null」や「c1=''」なら、ヒットします。

列c1に「null」を格納した場合、「c1=''」ではヒットしません。
「c1 is null」なら、ヒットします。

クライアントのソフトで、「null」なのか、「''」(長さが0の文字)を区別できる
ように、
「(null)」と表示しているだけのことだと思われます。

逆に、「null」なのか「''」なのか、表示で区別できないと、質問者さんのような
勘違いが生じると思います。

クライアントのソフトで、わざわざnullを区別して表示してくれているのに、
その表示を変えるメリットはないと思います。

どうしても表示方法を変えたいなら、case関数、if関数、ifnull関数などで
変えられますが、「nullの場合、(null)と表示される」というクライアント ソフ
トの
処理を、別の表示に変えるだけの作業になります。


>お世話になります。現在、MS アクセスでADO、 データベースはMysqlで
>コーディング
>を行なっております。
>
>例えば、
>テーブルA
>フィルールドa VARCHAR NULLはOK(他のオプションはつけていません)
>フィールドb   VARCHAR NULLはOK(他のオプションはつけていません)
>フィールドc    VARCHAR NULLはOK(他のオプションはつけていません)
>
>のテーブルで
>
>レコードを1件追加します。
>INSET INTO テーブルA(フィルールドa,フィールドb) VALUES('TEST1','TEST2')
>
>テーブルの追加したデータの中身を確認しますとデータを追加していない
>フィールドcが文字列で"(null)"と表示されます。
>
>自分としては空の状態になってほしいのですが、Mysql側でも、アクセス側
>でも文字列としてフィールドcが文字列で"(null)"と表示されます。
>
>これはテーブル定義やキャラクタセットで解決できるのでしょうか。
>
>もちろん
>INSET INTO テーブルA(フィルールドa,フィールドb,フィールドc)
>VALUES('TEST1','TEST2','')
>とコーディングすればフィールドcは空文字で表示されますが、
>テーブルのフィールドを追加する度にコーディングもしなければいけないので
>非効率かと思いました。
>
>お忙しいところ、大変恐縮ですが、どなたかnullが文字列"(null)"になる現象がお
>こって
>解決方法をどうしたか知ってらっしゃる方がいましたら、教えていただけますで
>しょうか。

_________________________________________________________________
Webページも途切れずに印刷できるマイクロソフトの最新ブラウザはこちら 
http://promotion.msn.co.jp/ie7/ 


[前][次][番号順一覧][スレッド一覧]

     14056 2007-06-17 08:33 [akio_takahashi <aaak] null が文字列&quot;(null)&quot;になる件 
     14057 2007-06-17 08:56 ┣[IWASAKI Dai <dai@xxx]                                       
->   14058 2007-06-17 09:13 ┣[忠犬 KEN公 <ken_ken_]                                       
     14059 2007-06-17 09:45 ┣[遠藤 俊裕 <endo@xxxx]                                       
     14060 2007-06-17 15:18 ┗["Tetsuro IKEDA" <ikd]