用于在一个表中搜索SSN编号的ASQL语句,该表最多可以包含4800个VARCHAR

时间:2019-03-14 00:07:29

标签: db2 db2-zos

我正在搜索带有4800 varchar的表中指示的SSN号。

我尝试了

SSN_MSG类似于'%[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 :(得分:0)

据我所读,DB2版本11应该支持REGEXP_LIKE

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

答案 1 :(得分:0)

对于早期的DB2版本,可以使用fn:matches函数,该函数允许相同的正则表达式。

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