Инструменты пользователя

Инструменты сайта


distinct

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
distinct [2009/04/19 11:54]
attid
distinct [2009/04/28 12:32] (текущий)
Строка 1: Строка 1:
 +
 +====== DISTINCT ======
  
 +
 +===== Версии сервера =====
 +^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^
 +|  -  |  -  |  -  |  -  |  -  |  +  |  +  |  +  |  +  |  +  |  +  |
 +
 +
 +===== Доступно в =====
 +[[raznovidnosti_jazyka_sql|DSQL]] [[raznovidnosti_jazyka_sql|PSQL]]
 +
 +===== Формат =====
 +DISTINCT ​ используется в конструкции [[SELECT]] и как самостоятельный оператор ​
 +
 +//​переменная//​ IS [NOT] DISTINCT FROM //​переменная2//​
 +
 +FIXME
 +===== Описание =====
 +
 +сравнивает 2 значения невзирая на NULL
 +
 +если на поле существует индекс то он может быть использован при NOT DISTINCT
 +
 +FIXME
 +
 +===== Пример =====
 +Блок ​
 +<code sql>
 +execute block
 +returns (s varchar(100))
 +as
 +begin
 +  if (null = null) then
 +  begin
 +    s = 'null = null';
 +    suspend;
 +  end
 +
 +  if (null <> null) then
 +  begin
 +    s = 'null <> null';
 +    suspend;
 +  end
 +
 +  if (null = 12) then
 +  begin
 +    s = 'null = 12';
 +    suspend;
 +  end
 +
 +  if (null <> 12) then
 +  begin
 +    s = 'null <> 12';
 +    suspend;
 +  end
 +
 +  if (12 <> 12) then
 +  begin
 +    s = '12 <> 12';
 +    suspend;
 +  end
 +
 +  if (12 = 12) then
 +  begin
 +    s = '12 = 12';
 +    suspend;
 +  end
 +
 +  if (null is distinct from null) then
 +  begin
 +    s = 'null is distinct from null';
 +    suspend;
 +  end
 +
 +  if (null is not distinct from null) then
 +  begin
 +    s = 'null is not distinct from null';
 +    suspend;
 +  end
 +
 +  if (null is distinct from 12) then
 +  begin
 +    s = 'null is distinct from 12';
 +    suspend;
 +  end
 +
 +  if (12 is distinct from null) then
 +  begin
 +    s = '12 is distinct from null';
 +    suspend;
 +  end
 +
 +  if (12 is distinct from 12) then
 +  begin
 +    s = '12 is distinct from 12';
 +    suspend;
 +  end
 +
 +  if (12 is not distinct from 12) then
 +  begin
 +    s = '12 is not distinct from 12';
 +    suspend;
 +  end
 +
 +  if (12 is distinct from 13) then
 +  begin
 +    s = '12 is distinct from 13';
 +    suspend;
 +  end
 +
 +end;
 +</​code>​
 +результат
 +<​code>​
 +12 = 12
 +null is not distinct from null
 +null is distinct from 12
 +12 is distinct from null
 +12 is not distinct from 12
 +12 is distinct from 13
 +</​code>​
 +
 +
 +
 +<code sql>​SELECT * FROM T1 JOIN T2 ON T1.NAME IS NOT DISTINCT FROM T2.NAME;</​code>​
 +<code sql>​SELECT * FROM T WHERE T.MARK IS DISTINCT FROM '​test'</​code>​
 +
 +===== См. также =====
 +[[COALESCE]] [[nullif]]
 +
 +===== Источник =====
 +README.distinct.txt
distinct.txt · Последние изменения: 2009/04/28 12:32 (внешнее изменение)