0

我在一个名为地址的表中有一些数据:

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 + '%'

有没有像上面的查询那样简单的方法,还是我必须编写一个存储过程?

4

4 回答 4

1

您必须交换AddressHouseNumber。此外,因为您Address从您开始HouseNumber可以使您的查询模式正确且可搜索。

select Address
FROM   Addresses
WHERE  Address NOT LIKE HouseNumber + ' %'
于 2013-02-21T11:50:36.617 回答
0

您需要从地址中提取门牌号,并对照门牌号列进行检查(未测试):

select Address
from   Addresses
where  cast(Housenumber as int) != cast(left(Address, instr(Address, " ")-1) as int)

这假设门牌号始终位于地址的开头,并且门牌号和地址的其余部分之间有一个空格。

于 2013-02-21T11:56:21.207 回答
0

不应该是:

select Address FROM Addresses WHERE Address NOT LIKE '%' + HouseNumber + '%'

??

于 2013-02-21T11:46:38.707 回答
0

也许你应该换个方式试试

select Address FROM Addresses WHERE Address NOT LIKE '% ' + HouseNumber + ' %'

这样,它将尝试将“1”(门牌号)与“2 方式”匹配。而不是反过来。

于 2013-02-21T11:47:49.290 回答