Как разбить строку в postgresql и вернуть другую строку, если она пуста

У меня есть один столбец, который мне нужно разделить на два в зависимости от того, что находится до и после ':'. Если знака «:» нет, мне нужно, чтобы во втором столбце было написано «Нет».

Пример:

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

Это отлично разбивает исходный столбец, но не возвращает «Нет», если нет второй части.

Как вернуть «Нет»? Спасибо

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как насчет простого СЛИЯТЬСЯ с НУЛИФ, который включает пустые результаты?

COALESCE возвращает первое ненулевое значение в своих параметрах.

NULLIF вернет NULL, если два аргумента совпадают.

SELECT 
 SPLIT_PART(headline, ':', 1) AS headline
,COALESCE(NULLIF(SPLIT_PART(headline, ':', 2), ''), 'None') AS subtitle
FROM table

Вы видите, как это работает ЗДЕСЬ

Другие вопросы по теме