Amazon Redshift 正则表达式模式匹配 0 和 9 以外的数字,如 1111111111



我正在尝试验证一个不允许使用重复数字的值的字段。类似字段不应具有以下所有情况

{'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文档指南

最新更新