0

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

我试过了

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

4

2 回答 2

0

根据我的阅读,DB2 版本 11 应该支持REGEXP_LIKE

WHERE REGEXP_LIKE(SSN_MSG, '[0-9]{3}-[0-9]{2}-[0-9]{4}')
于 2019-03-14T01:25:24.433 回答
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
于 2019-03-14T06:54:53.210 回答