Нет версии символа меняющегося поля будет возвращать ничего, кроме NULL
, если это не значение ... это действительно расстраиваетPOSTGRES COALESCE (NULLIF (c.name, «»), «Unassigned») не работает
CASE WHEN COALESCE(NULLIF(e.name,''),'unassigned') IS NULL THEN 'unassigned' ELSE a.name END
был мой последний тест, и он по-прежнему просто возвращает NULL
если поле не имеет значения
это характер изменения (255)
COALESCE(a.name,'unassigned') // won't work
NULLIF(a.name,'') // won't work
NULLIF(a.name,NULL) // won't work
COALESCE(NULLIF(a.name,''),'unassigned') // won't work
однако мгновенно я использую 0
он работает ..
что с этим?
это символ варьируя (255) поле, и он установлен по умолчанию в нуль
как вопрос точки сборки столбца таблицы является
name varying character(255) DEFAULT(NULL)
, так что я знаю, что ввод NULL и я уже сделал
SELECT * FROM <tbl> WHERE name IS NULL;
и, конечно же, я возвращаю все строки NULL с именем a.name ... так что с этим связано?
Что означает «не будет работать»? Что он возвращает и что вы ожидаете от него? – JNevill
nullif(): Функция NULLIF возвращает нулевое значение, если value1 равно value2; иначе он возвращает value1.'. если 'a.name' равно null, DEFINITION не может быть равным или не равным' '' '. нулевое значение никогда не может быть равно никому, включая его. 'null' является ядовитым и делает большинство операций с ним также имеющими нулевые результаты. ваш nullif() будет работать только в том случае, если 'a.name' буквально является пустой строкой. –
хорошо, потому что COALESCE тест для NULL, и я заменяю его на «непризнанный», он «не работает», потому что независимо от того, что он всегда возвращает NULL –