如何从类似的地方选择中排除特殊字符-SQL Server

时间:2018-08-16 16:27:19

标签: sql sql-server

我需要运行此查询,但是它什么也没显示:

select * 
from table 
where countries like '%Canada Italy France Belgica%'

但是我的数据库中有这些值:

Countries: "Canada, Italy, France, Bélgica"

如果我执行此查询,它将起作用:

select * 
from table 
where countries like '%Canada, Italy, France, Bélgica%'

4 个答案:

答案 0 :(得分:1)

您似乎想对特殊字符进行特殊处理。 您想将逗号视为不存在,并且要将'é'与'e'等同对待。 因此,将所有逗号替换为空字符串,并将所有“é”替换为“ e”,然后进行比较。

App_Start

答案 1 :(得分:0)

使用以下具有固定名称的查询

select * from table where countries in ('Canada', 'Italy', 'France', 'Bélgica')

或以下带有通配符的

select * from table where countries like '%Canada%' or countries like 'France%'

答案 2 :(得分:0)

在...之间交换您的like子句,以便查看列表中是否有任何内容与您的列匹配。

create table #myTable(countries nvarchar(64))
insert into #myTable
values
(N'Bélgica')
,(N'Canada')
,(N'France')


select * 
from #myTable
where 'Canada Italy France Belgica' like '%' + countries + '%'

如果您确实在列中用逗号分隔了列表,那么您需要使用字符串分隔符。堆栈溢出有数十个示例。

答案 3 :(得分:0)

您的表格中可能有ID之类的列,您可以在

中进行选择
divu