amazon redshift 正则表达式模式匹配 0 和 9 以外的数字,例如 1111111111

amazon redshift regex pattern match digits other than 0 & 9 like 1111111111

我正在尝试验证不允许使用重复数字值的字段。 Like 字段不应包含以下所有这些情况

{'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) ~ '^\b\d{10}\b$'
TRIM(field_nm) ~ '^[1-8]{10}$'
TRIM(field_nm) ~ '^(?!0|9)(){10}'

但是当有一个数字只重复两次或三次(如 9811115890)时,很少有人会抛出错误,也很少有人会匹配。

提前致谢...

regexp_substr 可用于与前瞻和后跟的模式匹配。这可以通过在其中一个参数中提供选项 'p' 来执行。

REGEXP_SUBSTR(TRIM(field_nm), '^(?!(\d)\1+$)\d{10}$', 1, 1, 'p') AS "chcek2"

有关详细信息,请参阅 regexp_substr redhsift documentation guide