SQL WHERE IN语句中的单引号

时间:2015-01-20 15:42:43

标签: sql sql-server stored-procedures where-clause

好的,我的T-SQL语句如下

IF @dept <> '' BEGIN
    SET @query = @query + ' AND T6.Region2 IN (' + REPLACE(@dept, '^', '''') + ') '
END

这基本上是针对一个法国网站,而且这些地区的名称都在名称中。我要做的是将类似下面的内容传递给SQL

@dept = 'Cote-d^Armor', 'Val-d^Oise'

并将^替换为'。当我进行替换时,只会导致错误,就好像被替换的^'并转义其余代码一样。

希望这是有道理的。

2 个答案:

答案 0 :(得分:0)

您需要在替换之外添加一些额外的引号。试试这个:

IF @dept <> '' BEGIN
SET @query = @query + ' AND T6.Region2 IN (''' + REPLACE(@dept, '^', '''') + ''') '
END

答案 1 :(得分:0)

我不会将“'”替换为“^”来存储它,然后尝试将其转换回来。存储“Cote-d'Armor”会更加简单,只要搜索字符串中有“'”,就可以在存储过程中加倍。

SQL Server可以愉快地处理数据中的'和',它们只需要正确转义。