我在名为Addresses的表中有一些数据:
HouseNumber Address
32 32 The Street
1 2 The Way
4 4 The Street
5 5 The Street
我试图找到不正确的众议院号码 我认为下面的查询将返回'2 The Way',但事实并非如此。
select Address
FROM Addresses
WHERE HouseNumber NOT LIKE '%' + Address + '%'
有没有像上面的查询那样简单的方法,或者我是否必须编写存储过程?
答案 0 :(得分:1)
您必须交换Address
和HouseNumber
。此外,由于您的Address
以HouseNumber
开头,因此您可以使您的查询模式正确并且可以浏览。
select Address
FROM Addresses
WHERE Address NOT LIKE HouseNumber + ' %'
答案 1 :(得分:0)
不应该是:
select Address FROM Addresses WHERE Address NOT LIKE '%' + HouseNumber + '%'
...
答案 2 :(得分:0)
也许你应该以相反的方式尝试
select Address FROM Addresses WHERE Address NOT LIKE '% ' + HouseNumber + ' %'
这样它会尝试将'1'(housenumber)与'2 way'匹配。而不是相反。
答案 3 :(得分:0)
您需要从地址中提取门牌号,并根据门牌号栏(未经测试)进行检查:
select Address
from Addresses
where cast(Housenumber as int) != cast(left(Address, instr(Address, " ")-1) as int)
这假设门牌号码始终位于地址的开头,门牌号码与地址的其余部分之间有空格。