如何在 SQL 中生成包含空字符串的字符串:''
我试过这个:
声明 @TEST NVARCHAR(50)、@COL1 NVARCHAR(50)、@COL2 NVARCHAR(50) 选择 @COL1 = 'A'、@COL2 = 'B'
SELECT @TEST = 'SELECT '' ['+ @COL1 + '], ''[' + @COL2+ ']'
选择@测试
但字符串最终看起来像:
选择'[A],'[B]
当它需要看起来像:
选择''[A],''[B]
谢谢。
如何在 SQL 中生成包含空字符串的字符串:''
我试过这个:
声明 @TEST NVARCHAR(50)、@COL1 NVARCHAR(50)、@COL2 NVARCHAR(50) 选择 @COL1 = 'A'、@COL2 = 'B'
SELECT @TEST = 'SELECT '' ['+ @COL1 + '], ''[' + @COL2+ ']'
选择@测试
但字符串最终看起来像:
选择'[A],'[B]
当它需要看起来像:
选择''[A],''[B]
谢谢。
SQL 中字符串中的两个单引号被视为单个转义单引号,因此为了在输出中生成两个,您需要在输入中放入 4,如下所示:
SELECT @TEST = 'SELECT '''' ['+ @COL1 + '], '''' [' + @COL2+ ']'
好吧,快速的答案是:(''''
加倍)
例如SELECT 'XX''''XX'
→XX''XX
我会留在那里,因为“你为什么要这样做‽”部分让我很紧张。
您不需要连接字符串。
SELECT @COL1, @COL2
应该足够了。参数@COL1 和@COL2 将自动替换为实际值。
但是,您不能像这样动态声明列名。上的参数代表值。通常你会做这样的事情:
SELECT [Name] FROM mytable WHERE ID=@id
如果您打算动态更改列名,那么您根本不会使用撇号:
SET @sql = 'SELECT [' + @COL1 + '], [' + @COL2 + ' FROM mytable';
EXECUTE sp_executesql @sql;