Хранение одинарных кавычек в переменной varchar SQL Server 2008 - PullRequest
12 голосов
/ 12 октября 2011

Мне было интересно, есть ли способ хранить одинарные кавычки в SQL Server 2008. Я создаю несколько отчетов, и все эти отчеты одинаковы, за исключением того, что они отличаются только кодами, которые я выбираю. Например, в одном отчете используются коды «abc», «def», «ghi», а в другом отчете - коды «jkl», «mno», «pqr». Я думал о том, чтобы уменьшить количество хранимых процедур, которые мне нужно будет сделать, я мог бы указать в отчете параметр, чтобы выбрать тип отчета для запуска. Исходя из этого, я бы использовал правильные коды. Поэтому я собирался хранить эти коды в переменной varchar. Ниже приведен функционал, на который я надеялся:

DECLARE @codes1 varchar, @codes2 varchar
SET @codes1 = ''abc', 'def', 'ghi''
SET @codes2 = ''jkl', 'mno', 'pqr''

Затем я собирался использовать правильную переменную varchar, основанную на параметре, выбранном пользователем. Единственная проблема заключается в установке переменных, так как строка будет содержать одинарные кавычки (строка будет использоваться в операторе SQL IN, что является причиной наличия одинарных кавычек).

Ответы [ 4 ]

24 голосов
/ 12 октября 2011

Вот так. Да Одед правильно. Подходящая терминология для этого - «избегать». Вы можете избежать одиночной кавычки ', удвоив ее ''

DECLARE @codes1 varchar(50), @codes2 varchar(50)
SET @codes1 = '''abc'', ''def'', ''ghi'''
SET @codes2 = '''jkl'', ''mno'', ''pqr'''
0 голосов
/ 17 октября 2016
                            int varId = "1";
                            String varItem = "Google's root";

                            String strSQL = "INSERT INTO table("
                                            + "id,"
                                            + "item"
                                            +")" 
                                            + "VALUES('" + varId 
                                            + "', '" + varItem
                                            + "')";
0 голосов
/ 28 сентября 2015

Избегайте однократной проблемы, просто удвоив ее.

Значение Varchar2 (10): = '' abc ''; --- Вы получите ошибку.

Значение Varchare (10): = '' 'abc' ''; --- Решу твою проблему.

0 голосов
/ 13 октября 2011

Старайтесь избегать жесткого кодирования значений. Создайте таблицу для хранения этих значений и способа их группировки.

Table CodeGroups
GroupNumber | Codes
       1    | abc
       1    | def
       1    | ghi
       2    | kkl
       2    | mno
       2    | pqr

Таким образом, пользователь должен выбрать только GroupNumber = 1

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...