record содержит null в любом из полей?
# SELECT a,pg_typeof(a) FROM (SELECT ('LED','DME','LED,,DME','',null)) t(a); ┌──────────────────────────┬───────────┐ │ a │ pg_typeof │ ├──────────────────────────┼───────────┤ │ (LED,DME,"LED,,DME","",) │ record │ └──────────────────────────┴───────────┘ (1 row) красивого решения нет
Эх... я надеялся на что-то типа any(record) is null :(
ну и как он развернет нетипизированное значение. Во что?
можно написать свою функцию
просили простой )
что может быть проще функции? 😎
(a=a) IS NULL ?
Ну, значит, тут баги и это надо фиксить.
https://www.postgresql.org/docs/current/functions-comparisons.html#ROW-WISE-COMPARISON Как говорится, "см. рис. 1".
А если она NULL, какой должен быть результат? В любом случае, лучше написать функцию для этого, мне кажется ( иначе использованные "простые" выражения введут в ступор тех, кто это потом будет читать).
Если хоть одна из "колонок" записи имеет значение null то true
Если вся запись имеет значение NULL, вот так: DECLARE x record = NULL; Какой должен быть результат?
По ссылке говорится именно о таком поведении. И это, кстати, работает. Только топикстартер спрашывал про "переменные", и в общем во всех случаях кроме row-constructor -- всё гораздо веселее и неконсистентнее.
Тоже true, но кстати это проверяется if x is null
Странно, у меня не работает (и это соответствует документации): https://dbfiddle.uk/ItVvVEU7
Для row constructor -- работает: https://dbfiddle.uk/zM-GUQYG И да, я дочитал ту страницу документацыи, и понял, что там говорится наконец, спасибо.
Обсуждают сегодня