2012-02-15 72 views
8

中使用「NOT LIKE」我們可以在LIKE '%abc%'的對面使用"NOT LIKE '%abc%'"嗎? 我試過並得到了一些結果,但看起來不正確!我們可以在sql

是否有類似regex in SQL的任何內容。

例如:

我HAE用3場的表。

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

我可以獲取地址**用了特殊字符檢查每個特殊字符一個接一個。如何

+1

是否存在Db2標籤意味着** DB2中是否存在正則表達式? – Oybek 2012-02-15 21:12:04

+0

:-)我使用db2 ..但問題是關於一般的SQL! – zod 2012-02-15 21:17:41

+0

通過谷歌搜索,我發現,即使SQL服務器確實有一定的支持。但它沒有被廣泛使用。正則錶行查找很昂貴。 – Oybek 2012-02-16 06:03:00

回答

5

當然,看看here。也不支持LIKE。

+1

只是爲了完成答案,[相關問題](http://stackoverflow.com/questions/4763757/regular-expressions-in-db2-sql); – Oybek 2012-02-15 21:14:33

+0

@Oybek - 謝謝。 – 2012-02-15 21:15:39

+0

歡迎您=)) – Oybek 2012-02-15 21:17:03

4

在SQL Server中。如果你想包含比字母數字和空格其他字符地址:注意到^字符

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

意味着「任何單個字符不在指定範圍內」。不確定在DB2中是否可能有類似的東西。

1

在DB2中,我已經成功地規定「不喜歡」這樣(9.7.900.250版):

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

這說明所有訂單在訂單#不以大寫字母「S」開頭。

1

沒有描述什麼是「嘗試並得到了一些結果,但看起來不正確!!」關於主體調查,但在審查給定數據和OP的兩個謂詞時,請考慮以下內容;注意到,次級正則表達式查詢顯然已經回答和接受,所以在此響應忽略:

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%')形式的謂詞規範應產生相同的結果;它們在邏輯上是相同的請求。