DECODE
逐一比较每个搜索值的表达式。如果表达式等同于搜索内容,则函数返回相应的结果。如果未找到匹配,则函数返回默认值。如果忽略了默认值,则函数返回 null。
DECODE 与 IF-THEN-ELSE 和 CASE 表达式相类似:
CASE expression
[WHEN search THEN result]
[WHEN search THEN result]
...
[ELSE default];
实参可以包含 Vertica 支持的所有数据类型。单独结果的类型会被提升到可用于表示全部结果的最不常见的类型。这样会产生字符串类型、精确数字类型、近似数字类型或 DATETIME 类型,其中所有的结果实参必须属于同一类型的分组。
行为类型
不可变语法
DECODE ( expression, search, result [ , search, result ]...[, default ] )
参数
expression
- 要比较的值。
search
- 与 表达式进行比较的值。
result
- 表达式等同于搜索内容时返回的值。
default
- 可选。如果未找到匹配,则 DECODE 返回默认值。如果忽略了默认值,则 DECODE 返回 NULL(如果未找到匹配)。
示例
以下示例将 product_dimension 表中权重列的数值在输出中转换为描述值。
=> SELECT product_description, DECODE(weight,
2, 'Light',
50, 'Medium',
71, 'Heavy',
99, 'Call for help',
'N/A')
FROM product_dimension
WHERE category_description = 'Food'
AND department_description = 'Canned Goods'
AND sku_number BETWEEN 'SKU-#49750' AND 'SKU-#49999'
LIMIT 15;
product_description | case
-----------------------------------+---------------
Brand #499 canned corn | N/A
Brand #49900 fruit cocktail | Medium
Brand #49837 canned tomatoes | Heavy
Brand #49782 canned peaches | N/A
Brand #49805 chicken noodle soup | N/A
Brand #49944 canned chicken broth | N/A
Brand #49819 canned chili | N/A
Brand #49848 baked beans | N/A
Brand #49989 minestrone soup | N/A
Brand #49778 canned peaches | N/A
Brand #49770 canned peaches | N/A
Brand #4977 fruit cocktail | N/A
Brand #49933 canned olives | N/A
Brand #49750 canned olives | Call for help
Brand #49777 canned tomatoes | N/A
(15 rows)