回答:
の値phone2を空の文字列と比較します。
select phone, phone2
from jewishyellow.users
where phone like '813%' and phone2<>''
NULL値はと解釈されることに注意してくださいfalse。
phone2<>""SQL構文チェッカーを通過しません。
フィールドがNULLかどうかを確認するにはIS NULL、を使用します。IS NOT NULL演算子を。
MySqlリファレンスhttp://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
NULL空の文字列値を確認します。
select phone
, phone2
from users
where phone like '813%'
and trim(coalesce(phone2, '')) <>''
注意:COALESCE()はSQL標準(-ish)ですが、ISNULL()はそうではありません。
私が使用していた答えは、私にはまだうまくいっていないので、ここではまだ見ていません(この質問は非常に古く、そのため機能しなかった可能性があります)。
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
> ''値がnullでないかどうか、および値が空白や空白でないかどうかをチェックする部分に注意してください。
基本的に、フィールドに空白や以外の何かが含まれている場合NULL、それは真です。それは、書き込みするのは簡単ですので、また、スーパーショートだし、オーバー別のプラスCOALESCE()とIFNULL()関数のは、フィールドの関数の出力を他のものと比較しないため、インデックスに対応していることです。
テストケース:
SELECT if(NULL > '','true','false');-- false
SELECT if('' > '','true','false');-- false
SELECT if(' ' > '','true','false');-- false
SELECT if('\n' > '','true','false');-- false
SELECT if('\t' > '','true','false');-- false
SELECT if('Yeet' > '','true','false');-- true
UPDATEがあり、私は期待していなかったことをこれに警告があるが、ゼロ以下ある数値がありません空の文字列よりも大きいので、あなたはしているが、ゼロまたは負その後、DO NOT DO THISできる数字を扱う場合には、それはごく最近私に噛み付き、デバッグするのが非常に困難でした:(
文字列(char、varchar、textなど)を使用している場合は、これで十分です。数値に注意してください。
不注意なデータエントリのphone2フィールドにスペースがある場合は、IFNULL関数とTRIM関数を使用してそれらのレコードを無視できます。
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone LIKE '813%'
AND TRIM(IFNULL(phone2,'')) <> '';
select phone, phone2 from jewishyellow.users
where phone like '813%' and phone2 is not null
NULL値と空の文字列である値。空の文字列をチェックする場合は、他の回答で提案されているように使用します。''column <> ''
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone like '813%' and (phone2 <> "");
デフォルト値が何であるかによって、多少の調整が必要になる場合があります。Nullフィルを許可した場合は、代わりに「Not NULL」を実行できます。これは明らかに優れています。
NOT()MySQLには機能がありません。2)phone2=""SQL構文チェッカーを通過しません。
別の方法はCHAR_LENGTH、列の値を具体的に調べることです。(と混同しないでくださいLENGTH)
文字長が0より大きい基準を使用すると、値が0またはの整数列の場合など、列の値が誤っている可能性がある場合に誤検知が回避されます。NULL。さまざまなデータ型にわたってより一貫して動作します。
その結果、少なくとも1文字の長さの値、または空でない値になります。
SELECT phone, phone2
FROM users
WHERE phone LIKE '813%'
AND CHAR_LENGTH(phone2) > 0
テーブルデータ
users
phone (varchar 12) | phone2 (int 10)
"813-123-4567" | NULL
"813-123-4567" | 1
"813-123-4567" | 0
users2
phone (varchar 12) | phone2 (varchar 12)
"813-123-4567" | NULL
"813-123-4567" | "1"
"813-123-4567" | "0"
"813-123-4567" | ""
CHAR_LENGTH(phone2) > 0 結果(同じ)
users
813-123-4567 | 1
813-123-4567 | 0
users2
813-123-4567 | 1
813-123-4567 | 0
代替案
phone2 <> '' 結果(異なる)
users
813-123-4567 | 1
users2
813-123-4567 | 1
813-123-4567 | 0
phone2 > '' 結果 (異なる)
users
813-123-4567 | 1
users2
813-123-4567 | 1
813-123-4567 | 0
COALESCE(phone2, '') <> ''結果(同じ)
注:結果phone2 IS NOT NULL AND phone2 <> ''は予想とは異なります
users
813-123-4567 | 1
813-123-4567 | 0
users2
813-123-4567 | 1
813-123-4567 | 0
phone2 IS NOT NULL AND phone2 <> ''結果(異なる)
users
813-123-4567 | 1
users2
813-123-4567 | 1
813-123-4567 | 0
使用する:
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 IS NOT NULL
IS NOT NULL空の値('')を持つ列のみの文字列には適用されない場合があることに気付きました。理由はわかりませんが、指摘したいだけです。t.phone2 <> ''空の文字列列をチェックするときに使用する方が賢明です。
私の場合、IS NOT NULL&の両方の方法が機能!= '' しなかったvarchar列がありましたが、次の方法でうまくいきました。これをここに置くだけです。
SELECT * FROM `db_name` WHERE `column_name` LIKE '%*%'
phone2何かがある」とはどういう意味ですか?phone2IS NOT NULL、空白ではない、空白文字だけではない、などと人々は推測しています