愚者の経験

「また今度」はほとんどこない

月別アーカイブ: 7月 2013

[SQL]SQL Serverで値比較の落とし穴

かなり久しぶりにブログに記事を書く気がします。

別の人が書いたSQLを見て直していたんですが期待した結果が
返ってこないので調べてみたところ…
なんと「0=”」はTrueになることが判明。(なんかでも前も同じ事あったような…)
なので以下の様なちょっと不思議なSQLも書くことができます。

	select case when ''=0 then 1 end as are
		,case when 0='0' then 1 end as oya
		,case when '0'='' then 1 end as un

照合順序の辺りで解決できるのかもしれませんが、腑に落ちないのは私だけ?
とりあえず暗黙の型変換には気をつける。cast(” as int)は0!!