3

次のクエリスローエラー。plzは私を助け、エラーが何であるかを教えてくれます。

このクエリは次の結果を返します:

string sqlcmd = "UPDATE branch SET brac_subj = " + query_data + " WHERE (braid = "+dd_branch+")";

     UPDATE branch SET brac_subj = "'11' , '12' , '13' , '14' , '15' , '16' , '17' , '18' , '19' , '20' , '21'" WHERE (braid = 1) 

文字列を次の形式で保存するにはどうすればよいですか?

'11' , '12' , '13' , '14' , '15' , '16' , '17' , '18' , '19' , '20' , '21' 
4

5 に答える 5

2

エニグマに遭遇している問題は、エスケープと呼ばれます。一重引用符は制限された文字であり、SQLで文字列の先頭を定義するため、同じ文字列内でそのまま使用することはできません。

それに加えて、SQL Serverは二重引用符を使用して文字列を定義しているように見えますが、そうではありません。

この構文は機能しません:

UPDATE branch SET brac_subj = "'11' , '12' , '13'"

この構文は機能します:

UPDATE branch SET brac_subj = '''11'' , ''12'' , ''13'''

秘訣は、プログラミングコードを使用して、値の周りに余分なアポストロフィを追加することです。これにより、他のすべての人が提案している答えが得られます。

また、この構文をテストする簡単な方法は、短いselectステートメントです。

SELECT "'11' , '12' , '13'"

vs

SELECT '''11'' , ''12'' , ''13'''
于 2012-05-07T19:21:20.030 に答える
1

文字列として必要な場合。これは機能するはずです:

query_data="'"+query_data.Replace("'","''")+"'";

このようにしたい場合"11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21"。次に、次のようにします。

query_data="'"+query_data.Replace("'","")+"'";
于 2012-05-07T11:05:19.690 に答える
0

各アポストロフィを2つに置き換えます。「ダンカン・オウトゥール」が必要な場合は、SQLクエリで「ダンカン・オウトゥール」を使用すると機能するはずです。

于 2012-05-07T11:03:27.593 に答える
0

これが挿入したい種類のデータである場合、つまり一重引用符なしでこれを試してください

UPDATE branch SET brac_subj = '11,12,13' WHERE (braid = 1)

一重引用符も挿入する場合は、一重引用符を二重引用符に置き換えます

UPDATE branch SET brac_subj = '"11","12","13"' WHERE (braid = 1)
于 2012-05-07T11:05:05.977 に答える
0

これを行う最も簡単な方法は、次を使用することです。

QUOTED_IDENTIFIERをオフに設定

UPDATEブランチSETbrac_subj= "'11'、'12'、' 13'"

SET QUOTED_IDENTIFIERがONの場合、識別子は二重引用符で区切ることができ、リテラルは一重引用符で区切る必要があります。SET QUOTED_IDENTIFIERがOFFの場合、識別子は引用符で囲むことができず、識別子のすべてのTransact-SQLルールに従う必要があります。詳細については、データベース識別子を参照してください。

于 2013-05-28T14:39:17.850 に答える