qnixnet
@qnixnet
PHP Trainee

Как сделать slug путем конкатенации строк sql, если одна из них может быть null?

Добрый вечер!

Просьба помочь с созданием лаконичных ссылок.
Есть таблица в postgres в которой есть 2 столбца name и text.

Есть задача создать лаконичную ссылку, которая состоит из этих двух строк, при этом по середине будет дефис '-', но строка name в БД может быть пустой и выходит что после конкатенации получится что-то типа '-text'.

Как правильно задать slug=CONCAT( LOWER(name), '-', LOWER(text) ) что бы их объединить их если строка name не пустая и slug=LOWER(text) если пустая?

П.С.: я опустил часть запроса, где удаляю пробелы и обрезаю строку до определенной длины, это счс не суть.

Спасибо!
  • Вопрос задан
  • 40 просмотров
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Достаточно просто при помощи условия:

select 
  lower(
    concat (
      "name", 
      case when "name" > '' then '-' else '' end, 
      "text"
    )
  ) 
from 
  links;


SQL запрос
Ответ написан
@MaLuTkA_UA
select 
  lower(
    concat_ws(
	  '-',
      nullif("name", ''), 
      nullif("text", '')
    )
  ) 
from 
  links;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы