172 похожих чатов

Господа, подскажите есть ли простой способ проверить что переменная типа

record содержит null в любом из полей?

17 ответов

21 просмотр

# SELECT a,pg_typeof(a) FROM (SELECT ('LED','DME','LED,,DME','',null)) t(a); ┌──────────────────────────┬───────────┐ │ a │ pg_typeof │ ├──────────────────────────┼───────────┤ │ (LED,DME,"LED,,DME","",) │ record │ └──────────────────────────┴───────────┘ (1 row) красивого решения нет

steelunicorn- Автор вопроса

Эх... я надеялся на что-то типа any(record) is null :(

steelunicorn
Эх... я надеялся на что-то типа any(record) is nul...

ну и как он развернет нетипизированное значение. Во что?

можно написать свою функцию

V
просили простой )

что может быть проще функции? 😎

(a=a) IS NULL ?

Ilya Anfimov
(a=a) IS NULL ?

Ну, значит, тут баги и это надо фиксить.

Ilya Anfimov
Ну, значит, тут баги и это надо фиксить.

https://www.postgresql.org/docs/current/functions-comparisons.html#ROW-WISE-COMPARISON Как говорится, "см. рис. 1".

А если она NULL, какой должен быть результат? В любом случае, лучше написать функцию для этого, мне кажется ( иначе использованные "простые" выражения введут в ступор тех, кто это потом будет читать).

steelunicorn- Автор вопроса

Если хоть одна из "колонок" записи имеет значение null то true

steelunicorn
Если хоть одна из "колонок" записи имеет значение ...

Если вся запись имеет значение NULL, вот так: DECLARE x record = NULL; Какой должен быть результат?

Yaroslav Schekin
https://www.postgresql.org/docs/current/functions-...

По ссылке говорится именно о таком поведении. И это, кстати, работает. Только топикстартер спрашывал про "переменные", и в общем во всех случаях кроме row-constructor -- всё гораздо веселее и неконсистентнее.

steelunicorn- Автор вопроса
Yaroslav Schekin
Если вся запись имеет значение NULL, вот так: DECL...

Тоже true, но кстати это проверяется if x is null

Странно, у меня не работает (и это соответствует документации): https://dbfiddle.uk/ItVvVEU7

Yaroslav Schekin
Странно, у меня не работает (и это соответствует д...

Для row constructor -- работает: https://dbfiddle.uk/zM-GUQYG И да, я дочитал ту страницу документацыи, и понял, что там говорится наконец, спасибо.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта