アプリ版:「スタンプのみでお礼する」機能のリリースについて

種別:Decimal(18,2)
属性:UNSIGNED
NULL:はい
デフォルト値:NULL

のフィールドがあります。phpMyAdminを通じてデータを入力しております。Null値のチェックを入れれば良いのですが、空白のまま残したおいた場合には、デフォルト値であるNull値が格納されるものと思っておりましたが、空白ですと0.00に変換されてしまします。

また、同時に、スクリプトの方ではjqGridを使用しているのですが、こちらの方でデータ編集をする際には、Null値のチェックボタンはありませんので、空白のままで更新しなければなりません。上記と同様に、空白にしておくと、0.00に変換されてしまいます。

Null値を入れるためには、どのような方法があるのでしょうか?
よろしくお願いします。

A 回答 (4件)

ちょいとjqGrid調べましたが、


要は後ろでPHPか何かのスクリプトが動いているワケですよね?
PHP側でif ( $param === '') {...} みたいにしたら良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

お返事が遅れまして申し訳ございません。

一筋縄ではいかなそうですが、現在格闘中です。ご指導ありがとうございました。

お礼日時:2011/07/31 03:56

はて、ウチのphpMyAdminはこんなですが・・・


参考URLのようなことではないですよね?

参考URL:http://oshiete.goo.ne.jp/qa/2620029.html
「Null値が入れられない」の回答画像3

この回答への補足

お付き合い頂き、大変感謝いたします。

言葉たらずでも申し訳ございません。添付頂いた『挿入』タブでなく、『表示』タブや『検索』をかけた際に表示されるデータ一覧で、鉛筆マークでライン編集ができるようになっていますよね。そこでの編集でNULL値を入れたいのです。

編集で、空のままであれば、SQL上は''になってしまい0が格納されますし、もちろんNULLと入れてもSQL上は'NULL'となってしまい、型と一致しないので0が格納されます。ここに何等かのエスケープ記号等(たとえば/Nとか)を入れることによりSQL上でNULLになってくれないものかと。

実際にやりたいのは、phpMyAdmin上ではなく、jqGridの上なんですが、いずれも、ユーザーが簡単に編集できるように、おもて向きはSQLを入れることなく編集を行えればと考えています。

そんなことは出来ません、というご回答でも結構ですので、どうぞよろしくお願い致します。

補足日時:2011/07/27 09:51
    • good
    • 1

null => 未定義


''  => 空文字、或いは長さ0のデータとして定義されている。
ということで、空文字(0)とnullはまったく別物です。
なんかしらの数値を入れようとしてるのですから、エラー0を返すって普通だと思いますよ。

MySQLの仕様の部分もあります。
INSERT INTO `int` VALUES ("12B345");
 => 123

SQLは
 UPDATE `rainfall`.`monthly` SET `JAN` = null WHERE `monthly`.`id` =1;
にしましょう。
''で囲んだものは文字列です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

なるほど、SQLで、'null'になってしまうからアウトなんですね。 `JAN` = null でちゃんとNull値が入りました。

jqGridでもphpMyAdminでもそうなのですが、SQLを使わずに、表中のテキストボックスになんらかの形で入力することによって'null'にならずにnullとして認識される方法はないのでしょうか。\nで入力すると大丈夫、というようなサイトを見たのですが、これもやっぱりだめでした。

jqGridのスクリプトを書き換えるのが大変そうなので、nullを入れたい時には、テキストボックスにこうに入れる、みたいなことができればいいのですが。。。

お礼日時:2011/07/27 02:39

nullじゃなくて空文字が入っているんじゃないでしょうか。



INSERT INTO tbl `int` values ('');
 => 0

INSERT INTO tbl `int` values (null);
 => Null
    • good
    • 0
この回答へのお礼

ありがとうございます。

仮に空文字としても、デフォルトをNullとしていた場合、Nullが格納されるのではないでしょうか?

また、
UPDATE `rainfall`.`monthly` SET `JAN` = 'null' WHERE `monthly`.`id` =1;の場合、nullというのが単に文字認識されてしまうので、型と一致せず、結局空白扱い=0.00となってしまいます。これも本当なら、型と一致しないということで、Null値が入りそうなものですが、そうならないのはなぜでしょうか?

お礼日時:2011/07/26 17:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す