我们可以在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
我可以获取地址**用了特殊字符检查每个特殊字符一个接一个。如何
答
在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%')
形式的谓词规范应产生相同的结果;它们在逻辑上是相同的请求。
是否存在Db2标签意味着** DB2中是否存在正则表达式? – Oybek 2012-02-15 21:12:04
:-)我使用db2 ..但问题是关于一般的SQL! – zod 2012-02-15 21:17:41
通过谷歌搜索,我发现,即使SQL服务器确实有一定的支持。但它没有被广泛使用。正则表行查找很昂贵。 – Oybek 2012-02-16 06:03:00