如何在我的 WHERE 子句中包含包含特殊字符的字符串?

How can I include strings which contain special characters in my WHERE clause?

我正在使用 SQL Server 2014,我在 T-SQL 查询的 WHERE 子句中遇到以下问题。

我的 WHERE 子句将列出城镇的名称。但是,有些名称中包含撇号等字符。示例:ST JULIEN D'HOTMAN

我的T-SQL如下所示:

SELECT
...

FROM [TownList]

WHERE [townName] IN

(
...,

...,

'ST JULIEN D'HOTMAN',

...,

)

上述方法不起作用,因为 [townName] 中的一个或多个包含撇号。

根据此处给出的解决方案(How to insert a value that contains an apostrophe (single quote)?,我需要将该值重写为 'ST JULIEN D''HOTMAN'

如果您有几个遵循此原则的名称,这很好。您可以手动更正值需要写入的方式。但是,我的列表中有 200 到 300 多个名称存在这些问题。

是否有解决此问题的替代解决方案?

在过滤数据之前,我会使用 table 或临时 table 来携带您的数据

如果你不想修改每个 [townName] 还有另一种方法你可以尝试 SET QUOTED_IDENTIFIER OFF 然后使用双引号作为字符串识别。

Causes SQL Server to follow the ISO rules regarding quotation mark delimiting identifiers and literal strings. Identifiers delimited by double quotation marks can be either Transact-SQL reserved keywords or can contain characters not generally allowed by the Transact-SQL syntax rules for identifiers.

SET QUOTED_IDENTIFIER OFF;

SELECT
...

FROM [TownList]

WHERE [townName] IN

(
...,

...,

"ST JULIEN D'HOTMAN",

...,

)

SET QUOTED_IDENTIFIER ON;