0

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 関数の奇妙な動作ですか? それとも、木には木が恋しいですか?

4

1 に答える 1