0

私はSQLを勉強していますが、これの何が問題なのかを調べようとしていますが、理解できないようです。

SELECT * 
FROM l_suppliers
WHERE suppliers_name = 'frank reed's vegetables';
4

7 に答える 7

6

'引用の途中に引用符があります。これを試して:

SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
于 2012-09-26T21:27:00.280 に答える
6

またはで文字列区切り文字'をエスケープする必要があります''\'

SELECT * FROM l_suppliers 
WHERE suppliers_name = 'frank reed''s vegetables';

そうしないと、SQL エンジンは文字列が後で終了するreedと見なし、残りのクエリをどう処理すればよいかわかりません。

于 2012-09-26T21:27:08.327 に答える
5

問題は、または'のようなエスケープ文字を使用する必要があることです。\'

たとえば、oracle、tsql (sybase、ms sql サーバー):

SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
于 2012-09-26T21:27:53.460 に答える
3

ステートメントに不完全な文字列があるようです。

正常に実行するには、 'withをエスケープする必要があります。''

SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
于 2012-09-26T21:27:35.283 に答える
3

サプライヤー名に一重引用符が埋め込まれています。それは声明を破ります。埋め込まれた一重引用符は、次のように二重にする必要があります。

SELECT * FROM l_suppliers WHERE suppliers_name = 'frank reed''s vegetables';
于 2012-09-26T21:28:39.187 に答える
1

これを試すと、異なる結果が得られる可能性があります

 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%';
于 2012-09-26T23:51:24.870 に答える
0

SQL では、英数字フィールドを区切るために一重引用符が使用されるため、文字列内に一重引用符がある場合、SQL はそこで終了すると見なします。エスケープするか、'' に置き換える必要があります。

于 2012-09-26T21:33:15.153 に答える