当前位置:Gxlcms >
数据库问题 >
oracle greatest(),least( ) ,coalesce()
oracle greatest(),least( ) ,coalesce()
时间:2021-07-01 10:21:17
帮助过:6人阅读
--场景1:
2 select pt, greatest(wm), least(wm)
3 from (
select s.producttype pt, wm_concat(s.productid) wm
4 from sys_product s
5 group by s.producttype)
6 where pt
= 1;
7 /*
8 --结果:
9 1 | 1 17,19,16,15,9,4,3,2,1,14,13,18
10 2 | 2 5,12,11,10,8,7,6
11 --maxt=17,19,16,15,9,4,3,2,1,14,13,18
12 --mint=17,19,16,15,9,4,3,2,1,14,13,18
13 */
14 --场景2:
15 select greatest(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18,
null) maxt,
16 least(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18) mint
17 from dual;
18 --结果:maxt=19 ,mint=1
19
20 /*1.
21 COALESCE 返回该表达式列表的第一个非空value。
22 格式: COALESCE(value1, value2, value3, ...)
23 含义: 返回value列表第一个非空的值。
24 value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
25
26 */
27 select coalesce(a,b,c)
from (
28 select ‘1‘ as a,
‘A‘ as b,
null as c
from dual
29 union all
30 select ‘1‘ as a,
null as b,
null as c
from dual
31 union all
32 select null as a,
null as b,
‘shit‘ as c
from dual
33 )
34
35 /*GREATEST 返回值列表中最大值
36 格式: GREATEST(value1, value2, value3, ...)
37 含义: 返回value列表最大的值。
38 value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
39 当value值列表中有一个为NULL,则返回NULL值。
40 EXAMPLE:
41 */
42 select greatest(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18) maxv,
--19
43 greatest(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18,
null) maxnull,
--null
44 least(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18) mint
--1
45 from dual;
46
47
48 /*
49 3. LEAST 返回值列表中最小值
50 格式: LEAST(value1, value2, value3, ...)
51 含义: 返回value列表最小的值。
52 value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
53 当value值列表中有一个为NULL,则返回NULL值
54 */
55 select greatest(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18) maxv,
--19
56 greatest(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18,
null) maxnull,
--null
57 least(
17,
19,
16,
15,
9,
4,
3,
2,
1,
14,
13,
18) mint
--1
58 from dual;
oracle greatest(),least( ) ,coalesce()
标签:... 表达式 from where 含义 sys 比较 style max