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