之前在学习中只用了简单的查询,最近工作用遇到一些好玩的函数,现在记录一下
case when
意思就是查询CUST_INFO 表,当字段CUST_TYPE 的值为“man”的时候,替换显示为“男”否则显示“女”。最后查询的结果是一列
SELECT CASE CUST_TYPE WHEN 'man' THEN '男' ELSE '女' END sex
FROM CUST_INFO ;
CASE WHEN CUST_TYPE='man' THEN '男'
WHEN CUST_TYPE='woman' THEN '男'
WHEN CUST_TYPE='animal' THEN '动物' ELSE '什么鬼' END
'man’和’男’数据类型不一致则报错:
[Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
decode的使用和case when一样
SELECT DECODE(CUST_TYPE ,'man','男','女') sex
FROM CUST_INFO ;
SELECT DECODE(CUST_TYPE ,'man','男','woman','女','什么鬼') sex
FROM CUST_INFO ;
SELECT nvl(CUST_TYPE ,'空') sex
FROM CUST_INFO ;
--如果你只是想判断是否为空,不想要原来的值
SELECT nvl(CUST_TYPE ,'空','不空') sex
FROM CUST_INFO ;
字段分隔
SELECT SUBSTR(CUST_NAME,0,2) FROM CUST_BASE cb
将下面的转化为“篮球,乒乓球,羽毛球,足球”
SELECT listagg(hoppy,',') within group ( order by hoppy)
FROM (
SELECT DISTINCT (hoppy) FROM user WHERE name='谷咕咕'
)
listagg(measure_expr,delimiter) within group ( order by order_by_clause);
解释:measure_expr可以是基于任何列的表达式
delimiter分隔符,默认为NULL
order_by_clause决定了列值的拼接顺序
格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号)
SELECT TO_CHAR(CREATE_DATE,'yyyy/MM/dd') FROM CUST_BASE cb
详细用法
https://www.cnblogs.com/yuan88008/p/15597988.html