在地址字段中的房屋编号前插入逗号

Posted

技术标签:

【中文标题】在地址字段中的房屋编号前插入逗号【英文标题】:Insert a comma in address field before number of house 【发布时间】:2019-07-19 09:08:13 【问题描述】:

我有一个表,其中包含很多没有逗号的地址字段 街道名称和门牌号码之间。 比如:

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

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

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

我在网上找到了一些东西,但很多想法不适用于 IBM DB”。

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

提前致谢 丹尼斯

【问题讨论】:

我们有V7R2M0版本。非常感谢。 不熟悉 IBM DB,所以我只是想告诉您我将在 Oracle DB 上使用什么。 SUBSTR(:X, 0, INSTR(:X, ' ', -1)) || ',' || SUBSTR(:X, INSTR(:X, ' ', -1)),如果这行得通,那么你可以做一个更新来做这个,或者你需要的任何东西 感谢 Tine 的回答...但是该字段是 40 个字符,我可以在字段末尾有很多空格。我必须找到最后一个数字,然后我必须找到从最后一个数字到左边的空格......我想。再次感谢。 【参考方案1】:

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

【讨论】:

非常感谢 Paul,但在我的 AS400 中,返回值与输入值相同 :-( 它应该可以工作。如果您运行我的示例,那是否包含逗号?我没有要测试它的 iSeries,但它可以在 DB2 LUW 11.1 上运行 我只是复制/粘贴您的示例,输入的输出相等...我的意思是输出没有昏迷。再次非常感谢。 我还控制着 International Components for Unicode (ICU) 选项并安装在我的 iSeries 上...再次感谢 谁能帮我理解为什么这个 SQL 在 Oracle 上工作而在 iSeries 7.2 上不工作?再次感谢。

以上是关于在地址字段中的房屋编号前插入逗号的主要内容,如果未能解决你的问题,请参考以下文章

将 GST 编号字段的小数分隔符更改为逗号

在 Excel 2010 中的第一个单词之后和最后一个单词之前插入逗号

sql 如何以逗号为分隔符分割一个字段的值

在插入触发器中将范围值解析为逗号分隔的值数组

sql server里如何将一组用逗号分隔的字符串分解并插入到另一张表中,比如:11873,27827, 也可能是好多

MySQL - 如何选择表中的行,其中 id 值位于另一个表中的逗号分隔字段中?