db2 如何仅在列有数据时格式化数据,否则不执行任何操作?

0qx6xfy6  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(156)

我尝试将电话号码的格式设置为5551234567,但某些列将为空。如果不执行CASE,则在运行查询时,结果将显示为带有空括号。查询运行,但无法将电话号码设置为SQL代码中的格式。例如(555)123-4567。

SELECT shade,name,
 CASE WHEN  phone = '' OR LENGTH (TRIM (phone)) = 0 THEN phone
 WHEN phone LIKE '%[0-9]%' THEN  
 '(' || '' || SUBSTRING(phone,1,3) || ')' || ' ' || SUBSTRING(phone,4,3) || '-' || SUBSTRING(phone,7,4) 
 ELSE phone END AS phone,
 FROM mytable

也试图检查是否它的所有数字,否则不做任何事情,只是显示它是如何!谢谢你的期待!

i86rm4rw

i86rm4rw1#

我找到了实现我所寻找的目标的方法,我希望它也能帮助其他人:

SELECT shade,name,
 CASE WHEN  phone = '' OR LENGTH (TRIM (phone)) = 0 THEN phone
 WHEN length(regexp_substr(phone, '[[:digit:]]+',1, 1) ) = 10
 THEN '(' || '' || SUBSTRING(phone,1,3) || ')' || ' ' || SUBSTRING(phone,4,3)    || '-' || SUBSTRING(phone,7,4) 
 ELSE phone END AS phone,
 FROM mytable

相关问题