我想过滤掉一些重复两位数超过3次的字符串数字。例如,如果它包含“121212”,它将不会被过滤,但如果它包含“12121212”,它将被过滤。我试图找到一种方法来解决它使用正则表达式,但无法找到它。
pn9klfpd1#
在Oracle中,使用正则表达式来比对两个数字,然后使用反向指涉来检查数字是否重复3次或以上。然后,若要排除这些数据列,请将NOT加入筛选:
NOT
SELECT * FROM table_name WHERE NOT REGEXP_LIKE(value, '(\d\d)\1{3,}')
其中,对于示例数据:
CREATE TABLE table_name (value) AS SELECT '121212' FROM DUAL UNION ALL SELECT '12121212' FROM DUAL UNION ALL SELECT '123121212' FROM DUAL;
输出:| 价值|| - -|| 小行星121212|| 小行星12312|fiddle
1条答案
按热度按时间pn9klfpd1#
在Oracle中,使用正则表达式来比对两个数字,然后使用反向指涉来检查数字是否重复3次或以上。然后,若要排除这些数据列,请将
NOT
加入筛选:其中,对于示例数据:
输出:
| 价值|
| - -|
| 小行星121212|
| 小行星12312|
fiddle