Mysql функция для разделения CSV? - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать функцию mysql, которая может разбивать строку csv и извлекать значение по указанному c индексу:

RETURN
    substring_index(
        substring_index(csv, ';', pos),
    ';', -1)

В целом это работает:

SPLIT("my;string", 1) -> returns 'my' 
SPLIT("my;string", 2) -> returns 'string' 

Но: как я могу вернуть пустое значение, если pos вообще отсутствует?

SPLIT("my", 5) -> returns 'my', but should return ''

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Я закончил следующим образом. Но если кто-то знает функцию без необходимости запуска REPLACE над строкой csv, я все равно буду благодарен за ваш ответ.

RETURN
CASE WHEN LENGTH(csv) - LENGTH(REPLACE(csv, ';', '')) + 1 >= pos
THEN substring_index(substring_index(csv, ';', pos), ';', -1)
ELSE ''
END
0 голосов
/ 04 мая 2020

У меня есть функция, которая, кажется, работает ...

RETURN 
CASE WHEN REPLACE(SUBSTRING(SUBSTRING_INDEX(inputStr, delim, pos), LENGTH(SUBSTRING_INDEX(inputStr, delim, pos -1)) + 1), delim, '') = inputStr 
THEN '' 
ELSE REPLACE(SUBSTRING(SUBSTRING_INDEX(inputStr, delim, pos), LENGTH(SUBSTRING_INDEX(inputStr, delim, pos -1)) + 1), delim, '')
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...