我有一个表的列,其数据类型为VARCHAR2(7个字符).此列中的数据具有诸如1006,1007,2002等的值
我想要一个匹配4002,4003,4005,4011,4013但不是4001的正则表达式.
首先我尝试使用,To_number(columnName) > 4001但得到了ORA-01722无效数字错误.
然后我尝试使用Regexp_like失败了.我试过了:
1. 40[02,03,05,11,13]
2. 40[0,1][^01]
3. 40[0,1]([2,3,5,11])
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
干杯
你可以使用这个条件:
col in ('4002','4003','4005','4011','4013')
Run Code Online (Sandbox Code Playgroud)
如果你真的需要这样做regexp_like,那么有几种方法可以做到.以下是一些降低可读性和长度的顺序:
regexp_like(col, '^(4002|4003|4005|4011|4013)$')
regexp_like(col, '^40(02|03|05|11|13)$')
regexp_like(col, '^40(0[235]|1[13])$')
Run Code Online (Sandbox Code Playgroud)
请注意,正则表达式([ ... ])中的类列出了匹配的单个字符,而不是序列.