mysql:8167
From: きたぢま <きたぢま <kitajima@xxxxxxxxxx>>
Date: Fri, 29 Aug 2003 09:10:45 +0900
Subject: [mysql 08167] Re: MYSQL UPDATEで「?」を書込と「 NULL 」に化ける
これは[山内]様が[03/08/28 23:46:43]に送信された、 [[mysql 08165] MYSQL UPDATEで「?」を書込と「 NULL 」に化ける ]への返信です。 〆 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ きたぢまです。 update bbs_db_tbl set comment = "?" where cnt=35; ↑ ダブルクウォーテーションの問題!? Perlでは?は正規表現の一種です。ダブルクウォーテーションだと 正規表現が有効になります。?は直前の1文字をあらわしますから、 直前の1文字が無い場合はNULLになるのでは? アプリから update bbs_db_tbl set comment = '?' where cnt=35; で発行してみてください。 シングルクウォーテーションで囲むと、正規表現は無効になったはず。 ※また、MySQLのSQLログをみても、ちゃんと正しいSQLになっていますか? PerlのSQL発行直前ではわからないと思います。MySQL自身がどう解釈したか みてみてくださいな。 山内> MYSQL UPDATEで「?」を書込と「NULL」に化ける 山内> 山内> 山内と申します。PERL,MYSQLでCGIを作成しています。 山内> ほぼ確認テストが終わりかけているのですが、表題のトラブルで悩んでいます。 山内> 山内> 山内> ■環境 mysql v1.4 for win2000,win/xp、PERL 5.0 山内> ■現象 山内> (1)PERLアプリからdb項目 commentを下記sqlでアップデート 山内> update bbs_db_tbl set comment = "?" where cnt=35; 山内> (半角の?です) 山内> (2)上記項目を同じくアプリから参照すると'NULL’となってしまう。 山内> 確認のために、DOS窓からmysql> select comment from bbs_db_tbl where 山内> cnt=35; 山内> とコマンド投入すると確かに下記の通りNULLとなっている。 山内> +---------+ 山内> | comment | 山内> +---------+ 山内> | NULL | 山内> +---------+ 山内> (3)一方、今度はDOS窓からコマンド update bbs_db_tbl set comment = "?" 山内> where cnt=35; 山内> を投入して同じくSELECTでデータ内容を確認すると、今度は意図したと 山内> おり'?'になって 山内> います。 山内> 山内> なお、(1)のUPDATEコマンドはSQL発行の直前でスナップをとって 山内> comment = "?" 山内> になっていることを確認しています。 山内> 山内> よろしくご教授ください。 山内> きたぢま <kitajima@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp/ ━━━━────────────────────────────
8165 2003-08-28 23:46 ["山内" <GEG03466@xxx] MYSQL UPDATEで「?」を書込と「 NULL 」に化ける -> 8167 2003-08-29 09:10 ┣[きたぢま <kitajima@x] 8168 2003-08-29 09:32 ┣[Shinichi Maruyama <m] 8169 2003-08-29 10:27 ┣[SUGAWARA Hajime <sug] 8175 2003-08-30 06:17 ┃┗["KAWAI,Takanori" <GC] 8176 2003-08-30 11:16 ┃ ┣["山内" <GEG03466@xxx] 8177 2003-08-30 21:58 ┃ ┃┗["KAWAI,Takanori" <GC] 8181 2003-09-01 12:19 ┃ ┗[SUGAWARA Hajime <sug] 8174 2003-08-30 00:59 ┗["山内" <GEG03466@xxx]