我们可以在sql

问题描述:

中使用“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

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

+1

只是为了完成答案,[相关问题](http://*.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

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

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

意味着“任何单个字符不在指定范围内”。不确定在DB2中是否可能有类似的东西。

在DB2中,我已经成功地规定“不喜欢”这样(9.7.900.250版):

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

这说明所有订单在订单#不以大写字母“S”开头。

没有描述什么是“尝试并得到了一些结果,但看起来不正确!!”关于主体调查,但在审查给定数据和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%')形式的谓词规范应产生相同的结果;它们在逻辑上是相同的请求。