tuple compare involving NULL

Поиск
Список
Период
Сортировка
От Tobias Florek
Тема tuple compare involving NULL
Дата
Msg-id 53EB40A3.9010708@ibotty.net
обсуждение исходный текст
Ответы Re: tuple compare involving NULL  (Kevin Grittner <kgrittn@ymail.com>)
Re: tuple compare involving NULL  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Re: tuple compare involving NULL  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-novice
hi,

i guess my problem reduces to the following question, but if there is
not enough detail feel free to ask for more details.


the following query returns true (as expected).

=# SELECT (2,4,'a string') > (2,3,'another string');

but any comparison involving NULL also returns NULL (i also kind of
expected that). e.g.:

=# SELECT (2,NULL, 'a')  > (1, NULL, 'b');  # no 1
=# SELECT (NULL, 2, 'a') > (NULL, 1, 'b');  # no 2
=# SELECT (NULL, 1, 'b') > (NULL, 2, 'a');  # no 3

does anyone knows a way to modify the queries to return true for number
1, true for 2 and false for 3, i.e. treat NULL in a tuple such that it
compares smaller than anything not NULL?


i can (of course) expand the tuple compare (a1, a2, a3) > (b1, b2, b3) to
=# SELECT a1 > b1
        or (a1 = b1 and (a2 > b2
                         or (a2 = b2 and a3 > b3))

and insert appropriate COALESCEs and IS NULLs and much conditional
logic. but i really hope, there is a better way.

thank you in advance,
  tobias florek


В списке pgsql-novice по дате отправления:

Предыдущее
От: Jov
Дата:
Сообщение: Re: WAL log compatibility between 9.1 and 9.3
Следующее
От: Kevin Grittner
Дата:
Сообщение: Re: tuple compare involving NULL