#postgresql #sql-null
#postgresql #sql-null
Вопрос:
У меня этот ID
столбец отображается как NULL
, хотя я ввел NOT NULL
выражение. Это не проблема с пустой строкой или каким-либо специальным символом, потому что я пытался использовать это выражение:
AND COALESCE(SYSTEM_ID,ASSET_NUMBER,SERIAL_NUMBER,'X') <>'X'
В моем предложении where (то же самое в select) и X
выводится вывод о том, почему это происходит — я предоставил пример кода select. Я могу решить эту проблему, поместив фильтр в предложение Having или используя внешний запрос
SELECT COALESCE(COL1,COL2,COL3) AS ID,
COL4,
...
COL16
FROM TABLE
WHERE COALESCE(COL1,COL2,COL3) IS NOT NULL
GROUP BY
COL4,
...
COL16
Комментарии:
1. Ну, учитывая пример запроса, для
ID
невозможно иметь значение NULL. Однако то, что может привести к тому, что оно будет равно NULL, зависит от вашего фактического запроса. Например, если ваш фактический запросWHERE COALESCE(...) IS NOT NULL OR 1 = 1
; очевидно, что это глупый пример, но вы поняли мою точку зрения… если это действительно значение NULL, то какое-то другое условие в запросе вызывает возврат этой строки.2. Да, вы должны опубликовать полный запрос, показывающий проблему, в идеале с образцами данных для ее запуска.