Сохранение одиночных кавычек в переменной varchar SQL Server 2008

Мне было интересно, есть ли способ хранить одиночные кавычки в 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, это причина, по которой присутствуют одиночные кавычки).

Ответ 1

Нравится это. Да, Одед прав. Правильная терминология для этого - "побег". Вы можете избежать одиночной цитаты ', удвоив ее ''

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Ответ 4

                            int varId = "1";
                            String varItem = "Google root";

                            String strSQL = "INSERT INTO table("
                                            + "id,"
                                            + "item"
                                            +")" 
                                            + "VALUES('" + varId 
                                            + "', '" + varItem
                                            + "')";