在动态SQL中添加撇号 [英] Adding an apostrophe into a dynamic SQL

查看:62
本文介绍了在动态SQL中添加撇号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问一下如何在动态SQL中添加撇号。我需要在其中必须带有撇号的一列中返回一条SQL语句。

I would like to ask how can I add an apostrophe into a dynamic SQL. I need to return an SQL statement in one of the columns which has to have apostrophes in itself.

我有以下语句:

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放入一对'。

I need to put a whole first CAST into a pair of '.

我尝试过:


  • 将整个 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))''';

    • Putting whole CAST statement into a separeted variable like: 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))+''';'

      • ' WHERE ' + @ColName + ' = ''' + CAST(@GuidArgument AS NVARCHAR(50)) + ''';'

      推荐答案

      请使用CHAR(39)而不是在动态代码中直接输入'。
      示例:

      Please use CHAR(39) instead of typing ' in your dynamic code directly. Example:

      declare @my_dynamic_sql nvarchar(max) = 'print char(39);';
      exec(@my_dynamic_sql);
      

      这篇关于在动态SQL中添加撇号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆