我正在搜索带有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
答案 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