0

Addressesというテーブルにいくつかのデータがあります。

HouseNumber Address
32          32 The Street
1           2 The Way
4           4 The Street
5           5 The Street

間違っている家番号を見つけようとしています。
以下のクエリは「2TheWay」を返すと思いましたが、そうではありません。

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

上記のクエリのようにこれを行う簡単な方法はありますか、それともストアドプロシージャを作成する必要がありますか?

4

4 に答える 4

1

とを交換する必要がAddressありHouseNumberます。また、からAddress始めるのでHouseNumber、クエリモードを正しく、またスラグ可能にすることができます。

select Address
FROM   Addresses
WHERE  Address NOT LIKE HouseNumber + ' %'
于 2013-02-21T11:50:36.617 に答える
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」(housenumber)を「2theway」と一致させようとします。逆ではなく。

于 2013-02-21T11:47:49.290 に答える
0

住所から家番号を抽出し、家番号の列(テストされていない)と照合する必要があります。

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

これは、家番号が常に住所の先頭にあり、家番号と住所の残りの部分の間にスペースがあることを前提としています。

于 2013-02-21T11:56:21.207 に答える