'' внутри "" в SQL Server

В этом SQL-запросе

INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
VALUES ('German Power Trades flagged red', 
        '" AND worst_status = 'R' AND country = 'DE' AND commodity = 'EL'"');

Проблема в том, что SQL Server не может обрабатывать R, DE и EL внутри "AND worst_status='R' AND country='DE' AND commodity='EL'"'.

Эта ошибка возникает:

Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'R'.

Есть ли другой синтаксис, который я должен использовать внутри цитаты, чтобы SQL Server видел ее просто как цитату? Я использую Microsoft SQL Server Management Studio 2017

Возможный дубликат Как избежать одиночной кавычки в SQL Server?

Diado 31.07.2018 12:00

Как это вставить? В коде? Если да, используйте подготовленные операторы.

juergen d 31.07.2018 12:00

@Hearner: это SQL Server, а не MySQL

juergen d 31.07.2018 12:01
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
256
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно удвоить одинарные кавычки:

INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
        VALUES('German Power Trades flagged red', '" AND worst_status=''R''
                 AND country=''DE'' AND commodity=''EL'' "');

"двойные кавычки" - довольно распространенное название символа ". Вместо этого я бы сказал что-то вроде «Вам нужно удвоить одинарные кавычки», что вы и сделали в своем коде.

Damien_The_Unbeliever 31.07.2018 12:07

@Damien_The_Unbeliever. . . Принято к сведению.

Yogesh Sharma 31.07.2018 12:09

В реальной среде вы вряд ли запишете эти значения буквально. Если вы действительно это сделаете, вам нужно будет удвоить одинарные кавычки. Однако для реального сценария вы должны использовать параметры, которые также решают эту проблему:

declare @filterName nvarchar(200) = N'German Power Trades flagged red'
declare @filterSQL nvarchar(4000) = N'AND worst_status=''R''
      AND country=''DE'' 
      AND commodity=''EL''' 
-- @filterName and @filterSQL would come from client
INSERT INTO RESULT_FILTER (RESULT_FILTER_NAME, RESULT_FILTER_SQL)
VALUES (@filterName, @filterSQL);

Другие вопросы по теме