У меня есть один столбец, который мне нужно разделить на два в зависимости от того, что находится до и после ':'. Если знака «:» нет, мне нужно, чтобы во втором столбце было написано «Нет».
Пример:
original_a: Сонный в Америке: почему мы устаем и что с этим делать заголовок: Сонный в Америке подзаголовок: Почему мы устали и что с этим делать
original_b: Медитация против разговорной терапии заголовок: Медитация против разговорной терапии субтитры: «Нет»
Я попробовал подзапрос
SELECT headline,
CASE WHEN subtitle = ' ' THEN 'None' ELSE subtitle END as subtitle
FROM (
SELECT split_part(headline, ':', 1) as headline, split_part(headline, ':', 2) as subtitle
FROM table) as subquery
Это отлично разбивает исходный столбец, но не возвращает «Нет», если нет второй части.
Как вернуть «Нет»? Спасибо
Как насчет простого СЛИЯТЬСЯ с НУЛИФ, который включает пустые результаты?
COALESCE
возвращает первое ненулевое значение в своих параметрах.
NULLIF
вернет NULL, если два аргумента совпадают.
SELECT
SPLIT_PART(headline, ':', 1) AS headline
,COALESCE(NULLIF(SPLIT_PART(headline, ':', 2), ''), 'None') AS subtitle
FROM table
Вы видите, как это работает ЗДЕСЬ