2011-12-15 3 views
0

Как я могу генерировать строку в SQL, который содержит пустую строку: ''SQL Апострофы

Я попытался это:

DECLARE @test NVARCHAR (50), @ COL1 NVARCHAR (50), @ COL2 NVARCHAR (50) SELECT @ COL1 = 'A', @ COL2 = 'B'

SELECT @TEST = 'SELECT' '[' + @ COL1 + '],' '[' + @ COL2 + ' ] '

ВЫБЕРИТЕ @TEST

Но строка заканчивает тем, как:

SELECT '[A],' [B]

Когда он должен выглядеть следующим образом:

SELECT '' [A], '' [B]

Спасибо.

+2

Вы должны узнать о: 1. [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection) и 2. [Параметрированные запросы] (http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or -give-me-death.html) – Oded

ответ

3

Две одиночные кавычки в строку в SQL рассматривается как один сбежавшего одинарные кавычки, поэтому для того, чтобы генерировать два на выходе, вам нужно поставить 4 на входе, например, так:

SELECT @TEST = 'SELECT '''' ['+ @COL1 + '], '''' [' + @COL2+ ']' 
+0

Спасибо, что сработало! – Rivka

1

Ну, быстрый ответ: '''' (удвоить их)

eg SELECT 'XX''''XX'XX''XX

Я оставлю это на этом, потому что «почему вы хотите это сделать», часть меня очень нервничает.

0

Вам не нужно связывать строки.

SELECT @COL1, @COL2 

должно быть достаточно. Параметры @ COL1 и @ COL2 будут автоматически заменены фактическими значениями.

Однако вы не можете динамически объявлять имена столбцов. Параметры на стенде для значений. Обычно вы могли бы сделать что-то вроде этого:

SELECT [Name] FROM mytable WHERE [email protected] 

Если вы собираетесь динамически изменять имена столбцов, то вы бы не использовать апостроф вообще:

SET @sql = 'SELECT [' + @COL1 + '], [' + @COL2 + ' FROM mytable'; 
EXECUTE sp_executesql @sql; 
+0

Спасибо, но я пытаюсь создать строку SQL, которая будет выбирать пустую строку вместе с псевдонимами столбца (параметрами) при выполнении. Я не хочу просто выбирать значения параметров. – Rivka