【问题标题】:How do I do quotes within quotes in TSQL如何在 SQL 中的引号内加上引号
【发布时间】:2014-09-01 06:32:14
【问题描述】:

我有一个 case 语句,它将一个 varchar 变量 @stored_proc_name 设置为我稍后要调用的过程的名称。我要调用的过程之一将 varchar 作为参数(以及 int)。我该怎么做呢?目前我拥有的是这个

SELECT @stored_proc_name = CASE @p_process_name
      WHEN 'misdate'               THEN 'findb..sp_cycle_date_daily' 
      WHEN 'balpremmis'            THEN 'findb..pc_bal_writ_prem'
      WHEN 'ursctl'                THEN 'MIS_feeds..pc_mis_update_feed_control "URSPO", 1'
      ELSE NULL
END

EXECUTE @stored_proc_name

最后一个是我的带参数的过程,其中“URSPO”应该是第一个,1 是 int。它在 SQL Server 2k8 上运行(我想我记得这个版本和旧版本之间的单引号和双引号有一些区别)。我有正确的吗?我承认我还没有测试过它,但这是一个我真的不想现在就开始的庞大过程的一部分。

感谢您的帮助!

【问题讨论】:

  • 如果你想在 SQL Server 中转义单个刻度,只需使用这样的双刻度:'MIS_feeds..pc_mis_update_feed_control ''URSPO'', 1'
  • 没错,听起来很熟悉。谢谢!
  • @entropic,考虑将其发布为答案并要求 OP 接受它。

标签: sql-server tsql variables quotes varchar


【解决方案1】:

要在字符串文字中转义单引号,请使用如下所示的双引号。请参阅Constants section in the BOL 了解更多信息:

select ' '' ' -- creates a string containing a space, a single quote, and another space

在您的示例中,这将是字符串:

'MIS_feeds..pc_mis_update_feed_control ''URSPO'', 1'

如果您打算在 LIKE 表达式中使用此字符串,您可能需要参考 this question

如果您要构建一个字符串作为 SQL 标识符,您可能希望使用 QUOTENAME 函数对其进行转义。

【讨论】:

    【解决方案2】:

    您可以使用以下代码:

    set quoted_identifier off;
    Select "'Hi'"
    

    quoted_identifiere 将使您能够使用 ",而不是 ';

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 1970-01-01
      • 2018-06-13
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2013-11-19
      • 1970-01-01
      相关资源
      最近更新 更多