我想问一下如何在动态SQL中添加撇号。我需要在其中必须带有撇号的一列中返回一条SQL语句。
我有以下声明:
SET @SQL_String = N'INSERT INTO #ReturnTable
(
TableName,
ColName,
SQL_Statement,
Value
)
VALUES
(
''' + @TableName + ''',
''' + @ColName + ''',
''' +
'SELECT ' +
@ColName +
' FROM ' +
@TableSchema + '.' + @TableName +
' WHERE ' +
@ColName + ' = ' + CAST(@GuidArgument AS NVARCHAR(50)) + ';' +''',
(
SELECT
' + @ColName + '
FROM
' + @TableSchema + '.' + @TableName +
' WHERE '
+ @ColName + ' = ''' + CAST(@GuidArgument AS NVARCHAR(50)) +
'''))';
执行:
EXECUTE @RC = [dbo].[GetLocationOfGuidPre] 'F2CAB996-F00F-43B8-A67A-0000721A829D'
我需要将整个第一个CAST放到一对'。
我尝试过:
CAST
语句放入一个分隔的变量中,例如:DECLARE @Test NVARCHAR(50);
SET @Test = CAST(@GuidArgument AS NVARCHAR(50));
SET @Test = 'CAST(@GuidArgument AS NVARCHAR(50))';
SET @Test = '''CAST(@GuidArgument AS NVARCHAR(50))''';
' WHERE ' + @ColName + ' = ''' + CAST(@GuidArgument AS NVARCHAR(50)) + ''';'
答案 0 :(得分:1)
请使用CHAR(39)而不是在动态代码中直接输入'。 示例:
declare @my_dynamic_sql nvarchar(max) = 'print char(39);';
exec(@my_dynamic_sql);