SQL - Удалить символы после третьего появления запятой - PullRequest
0 голосов
/ 03 марта 2020

У меня есть поле с именами авторов, разделенными запятыми, но я хочу иметь возможность выбирать только первые три имени, которые появляются независимо от того, сколько их всего в поле; У меня есть код ниже, но он не работает для меня:

select left(AUTHORS,charindex(',',AUTHORS,charindex(',',AUTHORS,charindex(',',AUTHORS)+1)+1)-1)

Я получаю сообщение об ошибке

ORA-00904: "ВЛЕВО": неверный идентификатор

Буду признателен за любые идеи о том, что я делаю не так.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Это даст вам запрошенный результат:

select NVL(SUBSTR(AUTHORS, 1, INSTR(AUTHORS,',',1,3) -1), AUTHORS)
from mytable;

Также, если у вас есть только 2 имени автора, будет возвращено значение столбца.

Вот маленький демо

1 голос
/ 03 марта 2020

В Oracle вы можете использовать regexp_replace():

select regexp_replace(authors, '^([^,]+,[^,]+,[^,]+).*$', '\1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...