2013-02-21 63 views
0

我有一個表中的一些數據稱爲地址:變量在LIKE子句

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

是否有任何簡單的方法來做到這一點,如上面的查詢,或者我必須編寫一個存儲過程?

回答

1

必須交換AddressHouseNumber。另外,由於您的AddressHouseNumber開頭,因此您可以使查詢模式正確並且可以進行裁剪。

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

它不應該是:

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

+0

不,因爲那會給'4'和'44 High Street'帶來誤判 – Raad 2013-02-21 11:49:14

0

也許你應該嘗試一下週圍的其他方法

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

這樣,它會嘗試將「1」(housenumber)與「2的方式」。而不是相反。

0

你需要提取地址的門牌號碼,並檢查對門牌號碼列(未測試):

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

這是假設的門牌號碼總是在的開始地址,並且房屋號碼和地址的其餘部分之間有一個空格。