类似字符串比较中的四个通配符

时间:2014-04-18 11:53:00

标签: sql-server

尝试在like字符串比较中使用四个通配符来解决问题。

select 1 where '%'+field1+'%' not like '%'+field2+'%'

这没有意义吗?从左到右工作,field1不能存在于'%' + field2 +'%'中,但由于通配符可以是任何东西并不意味着它总是存在?声明中的任何通配符都不相关吗?

在我的情况下,我试图找到field1(自由文本字段)在field2(已定义列表)的值中不存在的位置。

目前正在使用

select field1, field2, COUNT(1) as 'Count' from filteredNew_address 
where field1 like '%Place%' and field1 LIKE '%[0-9]%' 
and REPLACE(field1, ' ', '') not like REPLACE(field2, ' ', '')
group by field1, field2
order by 'count' desc

我得到以下结果;

field1          field2
Place 6         Place
Place 12        Place 24
Place 4         Place 7
Place 6b        Place 6
Place 1         Place 7
Place 2         Outside Country
...

在那里返回的值中,唯一存在问题的是Place 6b记录。这应该与field2记录匹配,因此不应返回。

为了纠正这个问题,我尝试改为;

and REPLACE(field1, ' ', '') not like REPLACE(field2, ' ', '')

但是这删除了应该返回的第一个结果(Place 6,Place)。

1 个答案:

答案 0 :(得分:0)

向field1添加通配符毫无意义。当您使用whilcards时,与在y列中搜索模式x相同。向正在搜索的列添加whildcards并不会改变任何内容。