oracle数据库日常使用总结
decode函数的使用
**使用规则:**decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
方法原理:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。但是使用更加便捷简单。开发中主要可用于:
1. 对不同取值的数据进行计数
在统计策略项目的成功和失败情况时,直接使用Count函数无法完成分别统计成功和失败的次数。此时可以使用sum函数和decode函数结合,例如SUM (DECODE(H.SERVICE_STATUS,'1',1,0)) AS SUCCESS
,若H.SERVICE_STATUS为’1’(其中’1’表示成功),则返回数字1,通过sum函数进行求和,即可求得所有SERVICE_STATUS为’1’的次数
2. 将当前值翻译为其他值
由上例已经可以看出,在使用DECODE(H.SERVICE_STATUS,'1',1,0)
时,将字符型的1翻译为了数字1,使其可以进行求和操作
字符串拼接操作
同一条数据中不同列的字符串之间进行拼接操作
oracle中可以使用||
和CONCAT
两种方式进行字符串拼接
使用||
方式:'字符串1' || '字符串2' || '字符串3' || '字符串4'
注意:这种方式进适用于oracle数据库,在MySQL或其他数据库中不能采用这种方式
使用CONCAT
方式:SELECT CONCAT('字符串1','字符串2') FROM TableName
注意:CONCAT()在oracle中只能拼接两个字符串,如果需要拼接多个字符串,可采用多个CONCAT()嵌套拼接多个字符串。但在MySQL中,CONCAT()函数是可以同时拼接多个字符串的,用法如下
`SELECT CONCAT('字符串1','字符串2','字符串3','字符串4') FROM TableName`
字符串聚合拼接操作
常用的有
- WMSYS.WM_CONCAT (从oracle 10G开始支持)
- LISTAGG(measure_expr,delimiter) WITHIN GROUP(order_by_clause) OVER(query_partition_clause) (从oracle 11G R2开始支持)
- SYS_CONNECT_BY_PATH (从oracle 9i开始支持)
WMSYS.WM_CONCAT用法
select wmsys.wm_concat(colname1)
from TableName
group by colname2;
默认分隔符为逗号,
如果想替换为其他分隔符,可采用如下方法
select replace(wmsys.wm_concat(colname1),',','、')
from TableName
group by colname2;
其余两种情况后续补充