首页 > 解决方案 > 在地址字段中的房屋编号前插入逗号

问题描述

我有一张表,其中有很多地址字段,街道名称和门牌号之间没有逗号。就像是:

"VIA MILANO 123"
"VIA MILANO    A123"
"VIA 11 MILANO      AA123"

我需要的是一个 SQL,它在最后一个包含数字的组之前插入逗号......比如:

"VIA MILANO, 123"
"VIA MILANO,    A123"
"VIA 11 MILANO,      AA123"

我在网上找到了一些东西,但很多人认为在 IBM DB 上不起作用”。

有人可以帮我吗?我在文件中有超过 100000 条记录要解决。

提前感谢丹尼斯

标签: sqldb2ibm-midrangedb2-400

解决方案


Db2 for i 7.2 支持 REGEXP_REPLACE 函数

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/db2/rbafzscaregexp_replace.htm

尝试这个

SELECT c, REGEXP_REPLACE(c,'(\s+\S*\d+\s*$)',',\1') 
FROM TABLE(
    VALUES
     ('VIA MILANO 123     ')
    ,('VIA MILANO A123    ')
    ,('VIA 11 MILANO AA123')
) AS t(c)

返回

 C                      2
 -------------------    --------------------
 VIA MILANO 123         VIA MILANO, 123
 VIA MILANO A123        VIA MILANO, A123
 VIA 11 MILANO AA123    VIA 11 MILANO, AA123

正则表达式提供了一种强大而灵活的字符串操作方式,值得学习。

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/db2/rbafzregexp_like.htm#rbafzregexp_like__regexp_likecontrol


推荐阅读