Sql server 相似字符串比较中的四个通配符

Sql server 相似字符串比较中的四个通配符,sql-server,Sql Server,试图在类似字符串比较的中使用四个通配符来转移注意力 select 1 where '%'+field1+'%' not like '%'+field2+'%' 这是没有意义的吗?从左到右,field1不能存在于“%”+field2+“%”中的任何位置,但既然通配符可以是任何东西,这不意味着它将始终存在吗?语句中的任何通配符都不相关吗 在我的例子中,我试图找到field1(自由文本字段)在field2(定义列表)的值中不存在的位置 当前正在使用 select field1, field2, CO

试图在类似字符串比较的
中使用四个通配符来转移注意力

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
...
在返回的值中,唯一存在问题的是Place6b记录。这应与field2记录匹配,因此不应返回

为了纠正这个问题,我试着改成

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

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

将通配符添加到字段1是没有意义的。当您使用whilcards时,它与在y列中搜索模式x相同。将whildcards添加到正在搜索的列中不会改变任何内容。

请您在每个字段中给出一两个数据示例?你到底想实现什么?NP,请看我当前使用的部分。我看到了示例行(谢谢),但它似乎过于简单化了。它不显示项目列表,只显示单个项目,但您可以说field2是一个“已定义的列表”。你能举几个例子来说明不同情况下的匹配和不匹配吗?对不起,我已经扩展了一些,希望能让事情更清楚。没问题。现在看起来确实更清楚了,但不是100%。为什么“field1”要使用通配符?如果field1=“Place 22”和field2=“Place 222”,会发生什么情况?这与Place 6b/Place 6示例的子集方向相反,但也需要字段1上的通配符。