powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хотя бы один из переменных = null
6 сообщений из 6, страница 1 из 1
хотя бы один из переменных = null
    #39156321
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите плиз есть ли одной функцией проверка на равенство одного из множеств NULL'ю
нужен аналог:
5 in (1,4,5,6) равен t

только надо что бы было так:
???(1,4,null,6) равнялся бы t
...
Рейтинг: 0 / 0
хотя бы один из переменных = null
    #39156473
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Я не знаю как это сделать для набора значений.

Если это константа и вы можете записать её в виде массива:
так:
Код: sql
1.
ARRAY[1,4,null,6]



или так:
Код: sql
1.
'{1,4,null,6}'::int[]



то можно сделать такую функцию:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION has_nulls(_in anyarray) RETURNS bool AS $has_nulls$
    SELECT NOT
              (SELECT count(i) FROM (SELECT unnest($1)) s(i)) = (SELECT array_length($1, 1));
$has_nulls$ LANGUAGE sql;

SELECT has_nulls(ARRAY[1,4,null,6]);
SELECT has_nulls('{1,4,null,6}'::int[]);

SELECT has_nulls(ARRAY[1,4,5,6]);
...
Рейтинг: 0 / 0
хотя бы один из переменных = null
    #39156481
vsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsl
Гость
Legushka,

Код: sql
1.
2.
3.
4.
create or replace function is_not_distinct_from(a integer,b integer) returns boolean as $$
    select a is not distinct from b as result;
$$ language sql cost 1;
create operator === (leftarg=integer,rightarg=integer,procedure=is_not_distinct_from);



Код: sql
1.
select null === any(array[5,6,7,null,8])
...
Рейтинг: 0 / 0
хотя бы один из переменных = null
    #39157450
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT ANY(ARRAY[]) IS NULL

SELECT NOT COALESCE(val1, val2, val3, ...) IS NULL
...
Рейтинг: 0 / 0
хотя бы один из переменных = null
    #39157506
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PCContra
Код: sql
1.
SELECT ANY(ARRAY[]) IS NULL


Синтаксис для ключевых слов ANY / ALL / SOME обязывает использовать оператор перед ними.
...
Рейтинг: 0 / 0
хотя бы один из переменных = null
    #39157512
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vslLegushka,

Код: sql
1.
2.
3.
4.
create or replace function is_not_distinct_from(a integer,b integer) returns boolean as $$
    select a is not distinct from b as result;
$$ language sql cost 1;
create operator === (leftarg=integer,rightarg=integer,procedure=is_not_distinct_from);



Код: sql
1.
select null === any(array[5,6,7,null,8])


!
откуда мораль -- "is not distinct from" и "is distinct from" -- не операторы, а бред сивой кобылы.
если бы "IS" был оператором со значением "is not distinct from" а "IS NOT" -- оператором со значением "is distinct from", то всё было бы весьма стройно. а не наследовало бы ублюдочному стандарту, что "IS NULL" -- однопозиционный оператор. а не частный случай использования оператора "a IS b". появилась бы утраченная симметрия.
а если б их еще и по индексам... -- цены б не было.
а главное -- старый код бы не пострадал. почти :]
а то "is not distinct from" -- казалось бы именно оператор проверки совпадения с узлом индекса -- ан хрен, изволь руками расписывать вариации. иначе не подхватит.


то же с симметрией any() -- в 9.4. any и all допускались только у левого операнда, как его модификаторы. (это по поводу контры).
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / хотя бы один из переменных = null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]