Преобразовать строку в массив и проверить размер в Vertica

Обратите внимание, что (.|\n)* может быть менее эффективным, чем (например) [\s\S]* (если регулярные выражения вашего языка поддерживают такие escape-последовательности), а не поиск того, как указать модификатор, который делает. также соответствуют новостям. Или вы можете пойти с альтернативами POSIXy, такими как [[:space:][:^space:]]*.

1
задан Barak Kedem 3 March 2019 в 10:10
поделиться

3 ответа

$ имеет особое значение в регулярном выражении. Он представляет конец строки.

Попробуйте убежать от него:

select REGEXP_COUNT('a$b$$, '[$]')
0
ответ дан Gordon Linoff 3 March 2019 в 10:10
поделиться

Я не смог преобразовать в массив - но я смог получить длину значений. Что я делаю, так это конвертирую в строки счетчик использования - это не самая лучшая производительность, но с этим способом я могу также манипулировать как фильтрация каждого значения между разделителями - и мне не нужно использовать [] для таких символов, как $

select (select count(1)   
        from (select StringTokenizerDelim('a$b$c',' 

Return 3

) over ()) t)

Return 3

0
ответ дан Barak Kedem 3 March 2019 в 10:10
поделиться

Вы можете создать скалярную функцию UDx (UDSF) в Java, C ++, R или Python. На входе будет строка, а на выходе будет целое число. https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/ExtendingVertica/UDx/ScalarFunctions/ScalarFunctions.htm

Это позволит вам использовать язык специальная логика массива для передаваемых строк. Например, в python вы можете включить эту логику:

input_list = input.split("$")
filtered_input_list = list(filter(None, input_list))
list_count = len(filtered_input_list)

Эти примеры являются хорошей отправной точкой для написания UDx для Vertica. https://github.com/vertica/UDx-Examples

0
ответ дан A. Saunders 3 March 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: