-1

有人可以完成下面的代码吗?

我只想在 RMK 字段中的任何位置查找 6 位数字范围,介于 100000 和 999999 之间

 REGEXP_LIKE(RMKADH.RMK, '[[:digit:]]') 

当前的代码可以工作,但会带回任何带有数字的东西,所以我试图将其缩小到 6 位数字。我尝试了一些但没有运气。

编辑:如果存在 6 位数字,我想标记此字段。参考将始终只有 6 位数字,不多不少。但由于它是一个自由文本字段,它可以在任何地方并包含任何内容。我确实想要标记的示例输出:>abc123456markj< = flagged。我不想标记的输出:>Mark 23647282< 因为它找到的数字长度超过 6 个字符,我知道它不是有效的参考。

4

3 回答 3

3

试试这个:

REGEXP_LIKE(RMKADH.RMK, '[1-9][[:digit:]]{5}') AND length(RMKADH.RMK) = 6

有关详细信息,请参阅:多语言正则表达式语法

于 2017-01-16T11:42:25.157 回答
0

您可以REGEXP_SUBSTR从给定字段中获取 6 位数字并使用它进行比较between

select * from t
where to_number(regexp_substr(col,'[[:digit:]]{6}')) between 100000 and 999999;
;

请注意,如果存在大于 6 位的序列,则上述解决方案将考虑前 6 位。如果您想对任何 6 个连续数字进行操作,则解决方案必须是不同的。

于 2017-01-16T11:51:40.247 回答
0

如果您想获取其中只有数字值的所有记录,您可以使用以下查询

    REGEXP_LIKE(RMKADH.RMK, '^[[:digit:]]+$');

以上将匹配字符串中从头到尾的任意数量的数字。因此,如果您的数字从 1 位到任意位数,这将很有用。

于 2020-05-01T08:29:33.930 回答