Оператор ASQL для поиска номера SSN в таблице, которая может иметь до 4800 VARCHAR - PullRequest
0 голосов
/ 14 марта 2019

Я ищу номер SSN, который был указан в таблице с 4800 varchar.

Я пытался

SSN_MSG Like '% [0-9] [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9] [0-9] [ 0-9]% '

Но это не сработало. Мне нужно проверить формат SSN, который является SSN 000-00-0000

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Для более ранних версий DB2 можно использовать функцию fn: match , которая допускает такое же регулярное выражение.

with tab (str) as (
select '123-45-6789' from sysibm.sysdummy1
  union all
select '123456789' from sysibm.sysdummy1
)
select str
from tab
where xmlcast(xmlquery('fn:matches($s, "[0-9]{3}-[0-9]{2}-[0-9]{4}")' passing str as "s") as int)=1;

STR
-----------
123-45-6789
0 голосов
/ 14 марта 2019

Из того, что я прочитал, DB2 версии 11 должна поддерживать REGEXP_LIKE:

WHERE REGEXP_LIKE(SSN_MSG, '[0-9]{3}-[0-9]{2}-[0-9]{4}')
...