我正在尝试验证一个不允许使用重复数字的值的字段。类似字段不应具有以下所有情况
{'1111111111','2222222222','3333333333','4444444444','5555555555',
'6666666666','7777777777','8888888888'}
但是0000000000和9999999999是可以的。
我试过了下面所有的模式,但我错过了一些我无法通过的小东西。
TRIM(field_nm) ~ '^\d{10}$' AND TRIM(field_nm) !~ '^(0|9){10}$'
TRIM(field_nm) ~ '^bd{10}b$'
TRIM(field_nm) ~ '^[1-8]{10}$'
TRIM(field_nm) ~ '^(?!0|9)(1){10}'
但当一个数字只重复两次或三次时,很少有人会抛出错误,也很少有人能匹配,比如9811115890。
提前感谢。。。
regexp_substr可以用于带有lookahead和后跟的模式匹配。这可以通过在其中一个参数中给定选项"p"来执行。
REGEXP_SUBSTR(TRIM(field_nm), '^(?!(\d)\1+$)\d{10}$', 1, 1, 'p') AS "chcek2"
有关更多详细信息,请参阅regexp_substr redhsift文档指南