Вставьте запятую после каждого 7-го символа и убедитесь, что данные имеют запятую после каждого 7-го символа правильно, используя регулярное выражение в hive sql.
Также игнорировать пробел при выборе 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$")','')
@WiktorStribiżew Извините, если я не упомянул ранее, он должен игнорировать пробел при выборе 5-го символа. В вашем запросе он включает пробел.
Вы просто хотите заменить пустой символ на ,
, я прав? SQL, как показано ниже:
select regexp_replace('12F123f,123asfH 0DB68ZZ,AG12453',' ',',') as result;
+----------------------------------+--+
| result |
+----------------------------------+--+
| 12F123f,123asfH,0DB68ZZ,AG12453 |
+----------------------------------+--+
Нет, это были просто примерные данные. Я хочу вставить запятую после каждого 7-го символа. Игнорируйте пробелы при выборе 7-го символа.
@bill_123, хорошо, понял, дай мне попробовать.
Я думаю, вы можете использовать
select regexp_replace('12345 12456,12345 123', '(?!^)[\\s,]+([^\\s,]+)', ',$1')
См. демонстрация регулярных выражений
Подробности
(?!^)
- нет совпадения, если в начале строки[\s,]+
- 1 или более пробелов или запятых([^\s,]+)
- Группа захвата 1: один или несколько символов, кроме пробелов и запятых.Замена ,$1
заменяет совпадение запятой и значением в группе 1.
Идеально. Спасибо.
Может
select regexp_replace('12345 12456,12345 123', '(.{5})', '$1,')
?