我正在尝试转换此正则表达式:
^.*[^a-z1-9\-].*$
要在oracle数据库查询中使用的正则表达式。我想要做的是找到name
,[{1}}和a-z
不同的0-9
列中至少包含一个字符的所有行。
查询
-
返回表中的所有行。
修改
问题在于select * from device where regexp_like(ctnmname, '^.*[^a-z1-9\\-].*$')
和转义0
的正则表达式。它适用于正则表达式-
答案 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
可能更容易阅读...
答案 2 :(得分:0)
where not regexp_like(ctnmname, '^(\w|-)*$')