在地址字段中的房屋编号前插入逗号
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 上不工作?再次感谢。以上是关于在地址字段中的房屋编号前插入逗号的主要内容,如果未能解决你的问题,请参考以下文章
在 Excel 2010 中的第一个单词之后和最后一个单词之前插入逗号