使用正则表达式和Hive SQL在每第7个字符后插入逗号

时间:2019-06-11 08:59:27

标签: sql regex hive

在Hive 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$")','')

2 个答案:

答案 0 :(得分:1)

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

select regexp_replace('12F123f,123asfH 0DB68ZZ,AG12453',' ',',') as result;
+----------------------------------+--+
|              result              |
+----------------------------------+--+
| 12F123f,123asfH,0DB68ZZ,AG12453  |
+----------------------------------+--+

答案 1 :(得分:1)

我认为您可以使用

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

请参见regex demo

详细信息

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

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