表格 33。 条件的表达式
数据库
|
语句
|
描述
|
Oracle
|
|
相比表达式(comp_exp)每个搜索值 (search_exp1, ..., search_expN) 逐一,并如果表达式 (comp_exp) 是相等到搜索值,然后返回相应的结果 (result_exp1, ..., result_expN),如果没有发现匹配则返回缺省的 (default_exp) 或缺省省略,然后返回 NULL。
comp_exp, search_exp 和 result_exp 可以是任何数据类型 CHAR, VARCHAR2, NCHAR, 或 NVARCHAR2。返回的字符串是 VARCHAR2的数据类型和在相同的字符定如同第一个结果参数。
search_exp, result_exp 和 default_exp 值可以源自表达式。
DECODE功能自动化地转换 comp_exp 和每个搜索值 (search_exp) 到第一搜索值的数据类型比较之前和也自动化地转换返回值的数据类型相同的第一个结果 (result_exp)。如果第一结果有CHAR数据类型或如果第一结果是null,然后t功能转换返回值到VARCHAR数据类型。
DECODE功能的考虑两个空值是等价的。如果comp_exp 是null,然后 DECODE返回第一搜索的结果,它也是null。
组件的最大数量在DECODE功能包括 comp_exp,搜素 (search_exp1, ..., search_expN),结果 (result_exp1, ..., result_expN),和缺省 (default_exp),是 255。
|
例如
|
DECODE (emp_type, 1, `clerk', 2, `book-keeper', `Unknown')
|
|
|
相比表达式 (comp_exp) 到每个搜素值 (search_exp1, ..., search_expN) 逐一和如果表达式 (comp_exp) 相当于搜索值然后返回相应的结果 (result_exp1, ..., result_expN),如果没有找到匹配则返回缺省的 (default_exp) 或如果缺省省略然后返回NULL。
所有表达式 (comp_exp, search_exp 和 result_exp) 必须CHAR, VARCHAR2, NCHAR, 或 NVARCHAR2数据类型。
|
例如:
|
CASE emp_type
WHEN 1 THEN `clerk'
WHEN 2 THEN `book-keeper'
ELSE `Unknown'
END
|
|
搜索从左到右直至它找到条件的发生 (condition_exp) 这是真的,并然后退回 result_exp。如果没有条件为真,然后退回缺省 (default_exp) 或如果缺省省略然后退回NULL。
|
例如:
|
CASE WHEN salary>500 THEN salary
WHEN salary<200 THEN 200
ELSE 500
END
|
MySQL
|
|
相比表达式 (comp_exp) 到每个搜素值 (search_exp1, ..., search_expN) 逐一和如果表达式 (comp_exp) 相当于搜索值,然后退回相应的结果 (result_exp1, ..., result_expN),如果没有找到匹配则返回缺省的 (default_exp) 或如果缺省省略,然后退回NULL。
退回值的类型是一样的第一退回的值得类型(表达式以后第一THEN)。
|
例如:
|
|
|
CASE workgroup
WHEN A THEN `Administration'
WHEN B THEN `Book-keeping'
WHEN C THEN `Customer department'
ELSE `Others'
END
|
|
搜索从左到右直至它找到条件的发生 (condition_exp) 这是真的,并然后退回 result_exp。如果没有条件为真,然后退回缺省 (default_exp) 或如果缺省省略然后退回NULL。
退回值的类型是一样的第一退回的值得类型(表达式以后第一THEN)。
|
例如:
|
CASE
WHEN salary between 200 and 500 THEN 500
WHEN salary<200 THEN 200
ELSE salary
END
|
Microsoft SQL Server
|
|
相比表达式 (comp_exp) 到每个搜素值 (search_exp1, ..., search_expN) 逐一和如果表达式 (comp_exp) 相当于搜索值,然后退回相应的结果 (result_exp1, ..., result_expN),如果没有找到匹配则返回缺省的 (default_exp) 或如果缺省省略,然后退回NULL。
退回类型:最高优先级的类型从类型的集合在 result_exp 和可选择的default_exp
|
例如:
|
CASE level
WHEN 1 THEN `First level'
WHEN 2 THEN `Second level'
WHEN 3 THEN `Third level'
ELSE `Top level'
END
|
|
|
搜索从左到右直至它找到条件的发生 (condition_exp) 这是真的,并然后退回 result_exp. If no condition is found to be true then returning default (default_exp) or if default is omitted then returning NULL.
退回类型:最高优先级的类型从类型的集合在 result_exp 和可选择的default_exp。
|
例如:
|
CASE WHEN price IS NULL
THEN 'Not yet priced'
WHEN price < 10
THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20
THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END
|
IBM DB2
|
|
相比表达式 (comp_exp) 到每个搜素值 (search_exp1, ..., search_expN) 逐一和如果表达式 (comp_exp) 相当于搜索值,然后退回相应的结果 (result_exp1, ..., result_expN),如果没有找到匹配则返回缺省的 (default_exp) 或如果缺省省略,然后退回NULL。
|
例如:
|
CASE credit_limit
WHEN 100 THEN 'Low'
WHEN 5000 THEN 'High'
ELSE 'Medium'
END
|
|
搜索从左到右直至它找到条件的发生 (condition_exp) 这是真的,并然后退回 result_exp。如果没有条件为真,然后退回缺省 (default_exp) 或如果缺省省略然后退回NULL。
|
例如:
|
CASE
WHEN1>0 THEN 'true'
ELSE `false'
END
|