[MySQL]Error Code: 1292. Truncated incorrect DOUBLE value

Read More



Error Code: 1292. Truncated incorrect DOUBLE value

上記はMySQLでUPDATE文を流そうとローカルでSQLを作成していた時に出たエラー。

原因はWHERE句の条件にあった。
文字列型カラムに対しての比較式において値を「'(シングルクォート)」でくくっていなかった。


簡単に書くとこんな感じ。
■間違った条件(office_codeはchar型)
UPDATE
  t_office
SET
  image_date = null
WHERE
  office_code IN (7001, 7002, 7003)


■正しい条件(office_codeはchar型)
UPDATE
  t_office
SET
  image_date = null
WHERE
  office_code IN ('7001', '7002', '7003')




でも不思議なことにSELECT文で同じことをやったときにはエラーにならなかったんだよね。
ちゃんとレコードも取れてたし。

だからUPDATE文だけこのエラーが出るのはちょっと納得いってない。


まあしかし型が文字列型なのにくくってないのがそもそもイカンのだけど。








Comments(2)

1  ビルス様  2016/11/14 (月) 13:35 ID:Z3TOFHC15
MySQLにおける暗黙の型変換
://soudai1025.blogspot.jp/2015/12/mysql.html

かなぁ。

金欲しい。

2  シラサヤ  2016/11/25 (金) 09:31 ID:o2JA5o615
リンク先みてきた
PHPでも簡易比較で面白い挙動するけどMySQLでも同じなんだな

挙動として面白いと思ったのは、
 SELECT * FROM hoge WHERE val = 0;
ってしたときに「val」側が型キャストで数値にされる側なんだな