[英]How can I ignore the ' character into a SQL Server where clause?
我在SQL Server上的查询有以下问题
我有这个简单的查询:
SELECT *
FROM [PROT_UTENTI]
WHERE
Nome = 'Paolo D''Aannuntis'
它通过Nome字段查找用户(我知道这代表名称和姓氏,这很可怕,但我不能更改DB,因为它是生产中的旧旧应用程序)。
如您所见,姓( D'Annuntis )包含'字符(我通过加倍''来使它转义)。
问题是我正在使用Nome值从另一个数据库(涉及迁移过程)中提取该Nome值来执行此查询,在该数据库中保存了相同的Nome字段而没有'字符到姓氏中。
所以我正在执行此查询:
SELECT *
FROM [PROT_UTENTI]
WHERE
Nome = 'Paolo DAannuntis'
代替
SELECT *
FROM [PROT_UTENTI]
WHERE
Nome = 'Paolo D''Aannuntis'
找到0个结果。
我的问题是:有一种方法可以忽略“,因此where子句Nome ='Paolo DAannuntis'可以找到相同的结果Nome ='Paolo D''Aannuntis' ?
您可以在搜索查询中将任何'替换为'
SELECT *
FROM [PROT_UTENTI]
WHERE replace(Nome, '''', '') = 'Paolo DAannuntis'
您也可以在两侧进行替换
WHERE replace(Nome, '''', '') = replace('Paolo D''Aannuntis', '''', '')
您写道,该值是从迁移中的另一个数据库推导出来的,
所以我想你会有一个变量。
declare @nome varchar(100) = 'Paolo D''Aannuntis' -- filled by your process
SELECT *
FROM [PROT_UTENTI]
WHERE replace(Nome, '''', '') = replace(@nome, '''', '')
这将找到您的行,无论变量或[PROT_UTENTU].nome
是否有引号。
这将影响查询的性能,所以我希望表中没有数百万行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.