ホームページ >バックエンド開発 >PHPチュートリアル >mysql クエリの質問についてアドバイスを求める: 私の SQL ステートメントではすべての状況を網羅できないのはなぜですか?
mysql クエリ
select count(*) from t1 wherecol1 > 0 52308
select count(*) from t1 wherecol1 > 0 and LENGTH(col2) = 0
なぜ 2 番目なのかitem 3 番目の項目で見つかった結果の合計は、最初の項目で見つかった結果と異なりますか?
col2 フィールドは varchar 型、長さ 150、および格納された URL アドレス (空または数値の場合もあります) です
Col1 フィールドは int 型で、特定の数値を格納します
さらに、
select count(*) from t1 wherecol1 > 0 and col2 > 0
16484
select count(*) from t1 wherecol1 > 0 で、col2 = 0
いいえ、これは正常ですよね。col2 フィールドは varchar 型で、長さは 150 です。保存されている URL アドレス (空または数値の場合もあります)
文字列なので、すでに問題は、col2 > 0 と直接比較する場合です。文字列がすべてです。このように比較することはできません
これは 1 つと 2 つであり、文字列は空である可能性があり、0 または 0 より大きいだけではありません
select count (*) from t1 where col1 > 0 andcol2 = ''
0
select count (*) from t1 wherecol1 > 0 and col2 != ''
これでは完全にはカバーできません...
select count(*) from t1 wherecol1 > 0 andcol2 is null これには値がありますか?
まだ QQ に追加されていないのですが、とても心配です - -
さて... 284786 こうなります
ありがとうございます...
さらに、QQ に追加しました見てください
select count(*) from t1 wherecol1 > 0 andcol2 is null これは価値がありますか?
さて... .284786 以上です
ありがとうございます...
また、QQ にあなたを追加しましたが、QQ メッセージが表示されませんでした。 。 。テンセントは2Bですか?私は汗をかいている! ! !
col2 も空の可能性があるため: null
当然、LENGTH(col2) = 0 の範囲には属しません
学習した将来、mysql は文字列をチェックするときに null であることを考慮する必要があります