Как боковое выравнивание столбца varchar, который не находится в формате массива в снежинке - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь выровнять сбоку varchar в массив, чтобы взорвать элемент в массиве

Например [trJGrODW4n4iLRN2A4WeraV740vH4L81ikd7KnRfsD bE578vR4L81isq7YnRchM]

1004

1004*

Я попытался заменить пространство varchar на ," (не работает). Используется strtok_to_array -> возвращает начало строки в Unicode
 Select s.value, replace(varchar_col,' ',',"') as to_array_format,
strtok_to_array(varchar_col,'')as strtok_to_array,* from table , lateral flatten(input => strtok_to_array(varchar_col,''))s

Фактический результат:

1. trJGrODW4n4iLRN2A4WeraV740vH4L81ikd7KnRfsD bE578vR4L81isq7YnRchM
2. [ "trJGrODW4n4iLRN2A4Wer\u0002aV740vH4L81ikd7KnRfsD\u0002bE578vR4L81isq7YnRchM" ]

Ожидаемый результат:

1. ["trJGrODW4n4iLRN2A4Wer","aV740vH4L81ikd7KnRfsD","bE578vR4L81isq7YnRchM"]
2. ["trJGrODW4n4iLRN2A4Wer","aV740vH4L81ikd7KnRfsD","bE578vR4L81isq7YnRchM"]

1 Ответ

1 голос
/ 12 октября 2019

Судя по полученному выводу, ваши данные содержат нулевые байты. Если вы хотите разбить строку на массив, используя нулевые байты в качестве границы, вы можете использовать

strtok_to_array(varchar_col,hex_decode_string('00'))

hex_decode_string принимает строку в шестнадцатеричном формате какinput и передача '00' возвращает нулевой байт, который мы затем используем в качестве разделителя.

...