如何在SQL中引用引号

时间:2014-07-10 18:45:56

标签: sql-server tsql variables quotes varchar

我有一个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上(我想我记得这个版本和旧版本之间的单引号和双引号有些不同)。我有什么正确的吗?我承认我还没有测试过,但它是一个巨大的过程的一部分,我现在真的不想开始。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

要转义字符串文字中的单引号,请使用如下所示的双引号。有关详细信息,请参阅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函数将其转义。

答案 1 :(得分:0)

您可以使用以下代码:

set quoted_identifier off;
Select "'Hi'"

quoted_identifiere可让您使用"而不是';