- ベストアンサー
Null値の入れ方について
- Null値を入れるためには、どのような方法があるのでしょうか?
- デフォルト値がNullのフィールドにおいて、空白のまま残した場合は0.00に変換されてしまいます。
- 同様に、スクリプトの方でデータ編集する際には、空白のままで更新することが必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょいとjqGrid調べましたが、 要は後ろでPHPか何かのスクリプトが動いているワケですよね? PHP側でif ( $param === '') {...} みたいにしたら良いのではないでしょうか。
その他の回答 (3)
- kuroizell
- ベストアンサー率55% (95/170)
はて、ウチのphpMyAdminはこんなですが・・・ 参考URLのようなことではないですよね?
補足
お付き合い頂き、大変感謝いたします。 言葉たらずでも申し訳ございません。添付頂いた『挿入』タブでなく、『表示』タブや『検索』をかけた際に表示されるデータ一覧で、鉛筆マークでライン編集ができるようになっていますよね。そこでの編集でNULL値を入れたいのです。 編集で、空のままであれば、SQL上は''になってしまい0が格納されますし、もちろんNULLと入れてもSQL上は'NULL'となってしまい、型と一致しないので0が格納されます。ここに何等かのエスケープ記号等(たとえば/Nとか)を入れることによりSQL上でNULLになってくれないものかと。 実際にやりたいのは、phpMyAdmin上ではなく、jqGridの上なんですが、いずれも、ユーザーが簡単に編集できるように、おもて向きはSQLを入れることなく編集を行えればと考えています。 そんなことは出来ません、というご回答でも結構ですので、どうぞよろしくお願い致します。
- kuroizell
- ベストアンサー率55% (95/170)
null => 未定義 '' => 空文字、或いは長さ0のデータとして定義されている。 ということで、空文字(0)とnullはまったく別物です。 なんかしらの数値を入れようとしてるのですから、エラー0を返すって普通だと思いますよ。 MySQLの仕様の部分もあります。 INSERT INTO `int` VALUES ("12B345"); => 123 SQLは UPDATE `rainfall`.`monthly` SET `JAN` = null WHERE `monthly`.`id` =1; にしましょう。 ''で囲んだものは文字列です。
お礼
ありがとうございます。 なるほど、SQLで、'null'になってしまうからアウトなんですね。 `JAN` = null でちゃんとNull値が入りました。 jqGridでもphpMyAdminでもそうなのですが、SQLを使わずに、表中のテキストボックスになんらかの形で入力することによって'null'にならずにnullとして認識される方法はないのでしょうか。\nで入力すると大丈夫、というようなサイトを見たのですが、これもやっぱりだめでした。 jqGridのスクリプトを書き換えるのが大変そうなので、nullを入れたい時には、テキストボックスにこうに入れる、みたいなことができればいいのですが。。。
- kuroizell
- ベストアンサー率55% (95/170)
nullじゃなくて空文字が入っているんじゃないでしょうか。 INSERT INTO tbl `int` values (''); => 0 INSERT INTO tbl `int` values (null); => Null
お礼
ありがとうございます。 仮に空文字としても、デフォルトをNullとしていた場合、Nullが格納されるのではないでしょうか? また、 UPDATE `rainfall`.`monthly` SET `JAN` = 'null' WHERE `monthly`.`id` =1;の場合、nullというのが単に文字認識されてしまうので、型と一致せず、結局空白扱い=0.00となってしまいます。これも本当なら、型と一致しないということで、Null値が入りそうなものですが、そうならないのはなぜでしょうか?
お礼
お返事が遅れまして申し訳ございません。 一筋縄ではいかなそうですが、現在格闘中です。ご指導ありがとうございました。