将正则表达式转换为Oracle数据库正则表达式

时间:2013-04-17 19:33:36

标签: java sql regex oracle

我正在尝试转换此正则表达式:

^.*[^a-z1-9\-].*$

要在oracle数据库查询中使用的正则表达式。我想要做的是找到name,[{1}}和a-z不同的0-9列中至少包含一个字符的所有行。

查询

-

返回表中的所有行。

修改

问题在于select * from device where regexp_like(ctnmname, '^.*[^a-z1-9\\-].*$') 和转义0的正则表达式。它适用于正则表达式-

3 个答案:

答案 0 :(得分:2)

正则表达式本身看起来不错。您可能希望将其区分大小写并包含0

SELECT * FROM device WHERE REGEXP_LIKE(mycolumn, '^.*[^a-z0-9-].*$', 'c');

答案 1 :(得分:1)

由于破折号是角色类中的最后一个,因此您无需转义它:

where regexp_like(ctnmname, '^.*[^a-z1-9-].*$')

然而

where regexp_instr(ctnmname, '[^a-z1-9-]') > 0

可能更容易阅读...

另见SQL fiddle

答案 2 :(得分:0)

where not regexp_like(ctnmname, '^(\w|-)*$')

fiddle

相关问题