DISTINCT谓词
DISTINCT 谓词将一个值与另一个值进行比较。
当谓词为 IS DISTINCT 时,如果表达式的比较求值为 true ,那么谓词的结果为 true。 否则,谓词的结果为 false。 结果不能是未知的。
当谓词 IS NOT DISTINCT FROM 时,如果表达式的比较求值为 true (空值被视为等于空值) ,那么谓词的结果为 true。 否则,谓词的结果为 false。 结果不能是未知的。
DISTINCT 谓词:
value1 IS NOT DISTINCT FROM value2 在逻辑上等同于搜索条件:
( value1 IS NOT NULL AND value2 IS NOT NULL AND value1 = value2 )
OR
( value1 IS NULL AND value2 IS NULL )
DISTINCT 谓词:
value1 IS DISTINCT FROM value2 在逻辑上等同于搜索条件:
NOT (value1 IS NOT DISTINCT FROM value2) 如果 DISTINCT 谓词的操作数是具有不同 CCSID 的字符串,那么将转换操作数,就像指定了上述逻辑上等效的搜索条件一样。
如果谓词的操作数是 SBCS 数据,混合数据或 Unicode 数据,并且如果执行语句时生效的整理顺序不是 *HEX ,那么将使用操作数的加权值来执行操作数的比较。 加权值基于整理顺序。
示例
假定表 T1 存在,并且它具有单列 C1以及具有以下 C1: 1 , 2 , null。 以下查询将生成以下结果:
SELECT * FROM T1
WHERE C1 IS DISTINCT FROM :HV:IND
| C1 | HV:IND | 结果 |
|---|---|---|
| 1 | 2 | True |
| 2 | 2 | 错 |
| 1 | 空 | True |
| 空 | 空 | 错 |
以下查询将生成以下结果:
SELECT * FROM T1
WHERE C1 IS NOT DISTINCT FROM :HV:IND
| C1 | HV:IND | 结果 |
|---|---|---|
| 1 | 2 | 错 |
| 2 | 2 | True |
| 1 | 空 | 错 |
| 空 | 空 | True |
