我正在搜索具有4800varchar。
的表中指示的SSN号码我尝试了
ssn_msg喜欢'%[0-9] [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]%'
,但它不起作用。我需要检查SSN的格式,即SSN 000-00-0000
从我阅读的内容中,DB2版本11应支持REGEXP_LIKE
:
WHERE REGEXP_LIKE(SSN_MSG, '[0-9]{3}-[0-9]{2}-[0-9]{4}')
对于早期的db2版本,可以使用fn:匹配函数,允许相同的正则表达式。
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