2

実行できるクエリが2つあり、「横向きの一重引用符」と一重引用符を使用しているという理由だけで、まったく異なる2つの結果が得られます。下記参照:

SELECT * FROM items WHERE 'natural' IS NOT NULL

「自然」列がNULLに設定されているかどうかに関係なく、すべてのレコードを返します

SELECT * FROM items WHERE `natural` IS NOT NULL

「自然」列に値が設定されているレコードのみを正しく返します

それは正しくありません。

4

2 に答える 2

9

最初の例では、文字列リテラルがnullでない'natural' IS NOT NULLかどうかをテストします。'natural'文字列リテラルは常にnullではないため、この条件は常にtrueになります。

2番目の例では、名前が。の列の値をテストしますnatural。これはあなたが望むものです。

関連している

文字列リテラル

'文字列は、一重引用符( )または二重引用符( )文字で囲まれたバイトまたは文字のシーケンスです"

スキーマオブジェクト名

識別子の引用文字はバッククォート( `)です。

于 2012-06-04T22:29:32.947 に答える
0

はい、正しく動作しています。 'natural'は文字列値であるため、'natural' IS NOT NULL常にtrueと評価されます。

于 2012-06-04T22:29:35.323 に答える