如何在我的 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;
我正在使用 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;