有人可以在下面完成代码。
我只想在RMK字段中的任何位置查找6位数字范围,介于100000和999999之间
REGEXP_LIKE(RMKADH.RMK, '[[:digit:]]')
当前代码有效,但是带回一个数字,所以我试图将它缩小到6位数。我尝试了一些但没有运气。
编辑: 如果存在6位数字,我想标记该字段。引用总是只有6位数字,不多也不少。但由于它是一个自由文本字段,它可以在任何地方包含任何内容。 示例输出我想标记:> abc123456markj< =已标记。 输出我不想标记:>标记23647282<因为它找到的数字长度超过6个字符,我知道它不是有效的参考。
答案 0 :(得分:2)
试试这个:
REGEXP_LIKE(RMKADH.RMK, '[1-9][[:digit:]]{5}') AND length(RMKADH.RMK) = 6
有关详细信息,请参阅:Multilingual Regular Expression Syntax
答案 1 :(得分:0)
您可以REGEXP_SUBSTR
从指定字段中获取6位数字,并使用between
进行比较
select * from t
where to_number(regexp_substr(col,'[[:digit:]]{6}')) between 100000 and 999999;
;
请注意,如果存在比6位更大的序列,则上述解决方案将考虑前6位数。如果您想要连续6位数字,解决方案必须是另一个数字。
答案 2 :(得分:0)
如果要获取所有仅包含数值的记录,则可以在下面的查询中使用
REGEXP_LIKE(RMKADH.RMK, '^[[:digit:]]+$');
以上内容将匹配字符串中从头到尾的任意数量的Numbers。因此,如果您的数字范围从1位数到任意位数,这将很有用。