"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つずつ取得できます。どうやって
確かに、見てください ここ 。 NOTLIKEもサポートされています。
SQLServerの場合。英数字とスペース以外の文字を含むアドレスが必要な場合:
address LIKE '%[^0-9a-zA-Z ]%';
^
文字に注意することは、「指定された範囲内にない単一の文字」を意味します。 DB2で非常に類似したことが可能かどうかはわかりません。
Db2(バージョン9.7.900.250)では、次のように「好きではない」を正常に指定しました。
select * from orders
where not(orders.order_number like 'S%')
これは、注文番号が大文字の「S」で始まらないすべての注文を示しています。
「試してみて結果が出たが、正しくないように見える!!」についての説明はありませんでした。サブジェクトの問い合わせに関しては、与えられたデータと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%')
のいずれかの形式で述語を指定すると、同じ結果が得られるはずです。それらは論理的に同一の要求です。