web-dev-qa-db-ja.com

SQLで「NOTLIKE」を使用できますか

"NOT LIKE '%abc%'"の正反対にLIKE '%abc%'を使用できますか?試してみて結果が出ましたが、正しくないようです!!

regex in SQLに似たものはありますか。

例えば:

私は3つのフィールドを持つテーブルを持っています。

id  name  address
1    xyz    1234 abcd 
2    abc    nomans land
3    omg    #123 new-york
3    nom    $123 &7up

アドレスを取得できますか**​​各特殊文字をチェックせずに特殊文字を使用文字を1つずつ取得できます。どうやって

10
zod

確かに、見てください ここ 。 NOTLIKEもサポートされています。

5
Otávio Décio

SQLServerの場合。英数字とスペース以外の文字を含むアドレスが必要な場合:

address LIKE '%[^0-9a-zA-Z ]%';

^文字に注意することは、「指定された範囲内にない単一の文字」を意味します。 DB2で非常に類似したことが可能かどうかはわかりません。

6
onedaywhen

Db2(バージョン9.7.900.250)では、次のように「好きではない」を正常に指定しました。

select * from orders
where not(orders.order_number like 'S%')

これは、注文番号が大文字の「S」で始まらないすべての注文を示しています。

3
Lonnie Best

「試してみて結果が出たが、正しくないように見える!!」についての説明はありませんでした。サブジェクトの問い合わせに関しては、与えられたデータとOPからの2つの述語を検討する際に、次のことを考慮してください。注意してください、二次regex問い合わせは明らかにすでに回答されて受け入れられているので、この応答では無視されます:

_with
  xmp (id, name, address) as
( values ( 1  ,  'xyz'  ,  '1234 abcd '    )
       , ( 2  ,  'abc'  ,  'nomans land'   )
       , ( 3  ,  'omg'  ,  '#123 new-york' )
       , ( 3  ,  'nom'  ,  '$123 &7up'     )
)
select id
from xmp
where address NOT LIKE '%abc%'
_

上記のDB2クエリは、セット{(2)、(3)、(3)}を生成するはずです。つまり、最初の行を除くすべてを含めます。述語を_address NOT LIKE '%abc%'_から_address LIKE '%abc%'_に変更すると、セット{(1)}が生成されます。つまり、最初の行のみを含めます。 _address NOT LIKE '%abc%'_またはNOT (address LIKE '%abc%')のいずれかの形式で述語を指定すると、同じ結果が得られるはずです。それらは論理的に同一の要求です。

2
CRPence