使用正则表达式和配置单元sql在每7个字符后插入逗号

使用正则表达式和配置单元sql在每7个字符后插入逗号,sql,regex,hive,Sql,Regex,Hive,使用配置单元sql中的正则表达式,在每7个字符后插入逗号,并确保数据在每7个字符后正确使用逗号 也可以在选择第7个字符时忽略空格 示例输入数据: 12F123f, 123asfH 0DB68ZZ, AG12453 112312f, 1212sfH 0DB68ZZ, AQ13463 输出: 12F123f,123asfH,0DB68ZZ,AG12453 112312f,1212sfH,0DB68ZZ,AQ13463 我尝试了下面的代码,但没有成功,并且正确插入了逗号 select regexp

使用配置单元sql中的正则表达式,在每7个字符后插入逗号,并确保数据在每7个字符后正确使用逗号

也可以在选择第7个字符时忽略空格

示例输入数据:

12F123f, 123asfH 0DB68ZZ, AG12453
112312f, 1212sfH 0DB68ZZ, AQ13463
输出:

12F123f,123asfH,0DB68ZZ,AG12453
112312f,1212sfH,0DB68ZZ,AQ13463
我尝试了下面的代码,但没有成功,并且正确插入了逗号

select regexp_replace('12345 12456,12345 123', '(/(.{5})/g,"$1$")','')

您只想将空字符替换为
,对吗?SQL语句如下所示:

select regexp_replace('12F123f,123asfH 0DB68ZZ,AG12453',' ',',') as result;
+----------------------------------+--+
|              result              |
+----------------------------------+--+
| 12F123f,123asfH,0DB68ZZ,AG12453  |
+----------------------------------+--+
我想你可以用

select regexp_replace('12345 12456,12345 123', '(?!^)[\\s,]+([^\\s,]+)', ',$1')

详细信息

  • (?!^)
    -如果在字符串开头,则不匹配
  • [\s,]+
    -1个或多个空格或逗号
  • ([^\s,]+)
    -捕获组1:除空格和逗号之外的一个或多个字符

,$1
替换用逗号和组1中的值替换匹配项。

可能
选择regexp_替换('12345 1245612345 123','(.{5}'),'$1',)
?@WiktorStribiżew抱歉,如果我之前没有提到,它应该在选择第5个字符时忽略空格。在您的查询中,它包含空格。不,这只是一个示例数据。我想在每7个字符后插入逗号。在选择第7个字符时忽略空格。@bill_123,好的,知道了,让我试试。完美。谢谢