mySQL データベースでいくつかのクエリを実行しているときに、説明できない問題に遭遇しました。
SELECT
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), 0) as sub_id
from people
Where
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), 0) != 0
ここまでは特別なことではありません。いくつかの partner_id の一部のみを表示したいだけです。しかし、同じステートメントを少し異なる方法で実行した場合 (0 を空の文字列 '' に交換):
SELECT
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), '') as sub_id
from people
Where
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), '') != ''
より多くの結果を得ることができます。唯一の違い:空の文字列をelseステートメントに入れて、空の文字列を比較します。これは SUBSTRING 関数の奇妙な動作ですか? それとも、木には木が恋しいですか?