2

次のクエリには結果がありません。

SELECT * FROM `personal_interest` WHERE LENGTH(`interest`) = 0

SELECT * FROM `personal_interest` WHERE TRIM(`interest`) = ''

SELECT * FROM `personal_interest` WHERE `interest` = ''

ただし、このクエリ

SELECT * FROM  `personal_interest` WHERE person = 380298

これらの結果があります:

phpMyAdminのスクリーンショット

// 編集:

SELECT HEX(interest) FROM personal_interest WHERE id = 19496

結果:

phpMyAdminスクリーンショット2

私のクエリがそれを選択しないフィールドには何がありますか?どのクエリを使用する必要がありますか?

4

1 に答える 1

3

デフォルトでは、TRIM()スペースのみが削除されます。フィールドには、他の空白(タブや改行文字など)または他の非印刷文字を含めることができます。フィールドのコンテンツのバイナリエンコーディングを確認するには、次を使用できます。

SELECT HEX(interest) FROM personal_interest WHERE id = 19496

結果からわかるように、フィールドにはキャリッジリターン文字0x0dであるが含まれています。空白または空白文字のみを含むすべてのレコードを選択するには、正規表現を使用できます。

SELECT * FROM personal_interest WHERE interest RLIKE '^[[:space:]]*$'
于 2013-01-11T22:18:34.380 に答える