私はSQLを勉強していますが、これの何が問題なのかを調べようとしていますが、理解できないようです。
SELECT *
FROM l_suppliers
WHERE suppliers_name = 'frank reed's vegetables';
私はSQLを勉強していますが、これの何が問題なのかを調べようとしていますが、理解できないようです。
SELECT *
FROM l_suppliers
WHERE suppliers_name = 'frank reed's vegetables';
'
引用の途中に引用符があります。これを試して:
SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
またはで文字列区切り文字'
をエスケープする必要があります''
\'
SELECT * FROM l_suppliers
WHERE suppliers_name = 'frank reed''s vegetables';
そうしないと、SQL エンジンは文字列が後で終了するreed
と見なし、残りのクエリをどう処理すればよいかわかりません。
問題は、または'
のようなエスケープ文字を使用する必要があることです。\
'
たとえば、oracle、tsql (sybase、ms sql サーバー):
SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
ステートメントに不完全な文字列があるようです。
正常に実行するには、 '
withをエスケープする必要があります。''
SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
サプライヤー名に一重引用符が埋め込まれています。それは声明を破ります。埋め込まれた一重引用符は、次のように二重にする必要があります。
SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
これを試すと、異なる結果が得られる可能性があります
SELECT
*
FROM l_suppliers
WHERE suppliers_name = 'frank reed''s vegetables';
また
SELECT
*
FROM l_suppliers
WHERE suppliers_name LIKE 'frank reed''s vegetables%';
また
SELECT
*
FROM l_suppliers
WHERE suppliers_name LIKE '%frank reed''s vegetables%';
SQL では、英数字フィールドを区切るために一重引用符が使用されるため、文字列内に一重引用符がある場合、SQL はそこで終了すると見なします。エスケープするか、'' に置き換える必要があります。