2012-05-07 4 views
3

ошибка запроса при запросе. plz help me & скажите мне, что является ошибкой.Ошибка в запросе обновления SQL

этого запроса returing следующий результат:

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' 

ответ

2

Проблема, с которой вы сталкиваетесь в Enigma, называется Escaping. Поскольку одинарные кавычки являются ограниченным символом и определяют начало строки в SQL, вы не можете использовать ее как-внутри той же строки.

В дополнение к этому, похоже, что у вас создается впечатление, что SQL Server использует двойные кавычки для определения строки, а это не так.

Этот синтаксис не будет работать:

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

Этот синтаксис будет работать:

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

Хитрость использует свой программный код, чтобы добавить эти дополнительные апостроф вокруг значений, таким образом ответы, что все другое предлагает.

Кроме того, простой способ проверить этот синтаксис является короткий оператор выбора:

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

против

SELECT '''11'' , ''12'' , ''13''' 
0

заменить каждый апострофа с двумя и он должен работать если вы хотите «Дункана о 'toole' вы используете 'duncan o''toole' в sql-запросе

+0

i m хранение данных в строке. Я хочу сохранить его в следующем формате: '11 ',' 12 ',' 13 ',' 14 ',' 15 ',' 16 ',' 17 ',' 18 ',' 19 ',' 20 ',' 21 ' – Enigma34

+1

вы должны использовать эту строку следующим образом: "' '' 11 '', '' 12 '', '' 13 '', '' 14 '', '' 15 '', '' 16 '', '17' ',' '18' ',' '19' ',' '20' ',' '21' '' '(обратите внимание на знаки, которые я использую) – falkor81

0

Попробуйте это, если это данные, которые вы хотите вставить, т.е. без одинарных кавычек

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

Если вы хотите, чтобы вставить одинарную кавычку, а также заменить одиночные кавычки двойные кавычки

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

Если вы хотите его в виде строки. Это должно работать:

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

Если вы хотите, чтобы они, как это "11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21". Затем выполните следующие действия:

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

Самый простой способ сделать это состоит в использовании:

SET QUOTED_IDENTIFIER OFF

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

Когда SET QUOTED_IDENTIFIER включен, идентификаторы могут быть разделены двойными кавычками, а литералы должны быть разделены одинарными кавычками. Когда SET QUOTED_IDENTIFIER выключен, идентификаторы не могут быть указаны и должны следовать всем правилам Transact-SQL для идентификаторов. Для получения дополнительной информации см. Database Identifiers.

Смежные вопросы