ホームページ >データベース >mysql チュートリアル >SQL クエリが「列 'Mary' が存在しません」を返すのはなぜですか?
「列 'Mary' が存在しません」: 引用の難問を理解する
次の SQL クエリを実行すると、エラーが発生する可能性があります'Mary' 列が存在しないことを示します:
SELECT telephone.telephonenumber AS tel FROM person, telephone WHERE person.idperson = telephone.idperson AND person.personname = ‘Mary’;
紛らわしいですが、 「Mary」を列名として参照しているのではなく、比較する値として参照しています。このエラーの原因は、文字列リテラルを区切るために、単純な一重引用符 ('Mary') ではなくスマート引用符 ('Mary') を使用していることにあります。
SQL では、多くの場合、スマート引用符が使用されます。識別子が予約語と衝突する可能性がある場合に曖昧さを防ぐため、列名またはテーブル名を囲むために使用されます。ただし、人物名と比較する値などの文字列リテラルの場合は、単純な一重引用符を使用することが不可欠です。
スマート引用符を単純な一重引用符に置き換えることにより、クエリは正常に実行されるはずです。 、「Mary」という名前の人の正しい電話番号を返します。修正されたクエリは次のとおりです。
SELECT telephone.telephonenumber AS tel FROM person, telephone WHERE person.idperson = telephone.idperson AND person.personname = 'Mary';
エラーを回避し、クエリが意図したとおりに動作するようにするには、SQL の文字列リテラルに単純な一重引用符を使用することが重要であることを覚えておいてください。
以上がSQL クエリが「列 'Mary' が存在しません」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。