Postgres COALESCE внутри nullif для 2 разных полей - PullRequest
0 голосов
/ 04 июля 2018

Я новичок в SQL и POSTGRES, и у меня был быстрый вопрос. Прямо сейчас у меня есть 2 разные таблицы, одна с информацией об автомобиле и одна с частичной информацией об автомобиле, и я хотел бы отсортировать по car.vin ИЛИ part_car.vin в зависимости от того, существует ли какой-либо из них, и отправлять все пустые / пустые строки в конец сортировки. В настоящее время мой оператор ORDER BY выглядит так:

ORDER BY nullif(coalesce(car.vin, partial_car.partial_vin), '') asc nulls last limit 50 offset 0

Я ожидаю, что coalesce примет первое ненулевое значение и использует его для сортировки, либо вернет null и отправит его до конца. Мои результаты до сих пор я не смог понять. Между фактическими значениями помещаются нулевые значения и т. Д. Если я сделаю это изменение снова (car.vin, ''), я увижу, что оно работает правильно. У кого-нибудь есть идеи относительно того, почему это поведение? Дайте мне знать, если вам нужно что-то еще от меня.

1 Ответ

0 голосов
/ 06 июля 2018

Это была человеческая ошибка с моей стороны. Объект, отправляемый клиенту, не был заполнен должным образом частичными данными. Таким образом, сортировка была правильной, но она видела пробелы из-за отсутствия этих значений.

...