1字符串拼接 ||
eg: D.PROVINCE_NAME || D.ADDRESS AS ADDRESS,
2使用oralce自定义的函数
SELECT
FN_GET_AGE_STR(A.DATE_BIRTH,SYSDATE) AS AGE,
3将多条数据拼接在一起,多列转一行
LISTAGG WITHIN GROUP
( SELECT LISTAGG (NAME, ';' ) WITHIN GROUP ( ORDER BY TYPE )
FROM 数据库分区名称.xxxxxx
WHERE xxxx_ID = A.ID ) AS "name",
4使用union all 排序 需要嵌套
SELECT* FROM (
SELECT XXXXX FROM A
UNION ALL
SELECT XXXXX FROM B
) F ORDER BY F.XXX
5 if else函数:case when then
(CASE WHEN B.ORDER_TYPE=1 THEN'进货' WHEN B.ORDER_TYPE=2 THEN'退货' END) AS type,
6格式转换
TO_NUMBER('0.00') ,--转为Number类型
ADD_MONTHS(#{endMonth},1) --月份+1
TO_CHAR --转为字符串
TO_DATE(XXXX,'yyyy-mm-dd')
7 REPLACE替换
REPLACE(USE_QUANTITY,'.00','')
8 SUBSTR截取字符串
substr(string string, int a, int b);
--a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
--b 要截取的字符串的长度
substr(string string, int a)
--a 可以理解为从第a个字符开始截取后面所有的字符串
9大小写转换
lower:大写字符转化成小写的函数 upper:小写字符转化成大写的函数
10多元表达式
NVL(QUANTITY,0)
11字符查找
instr( string1, string2 ) // instr(源字符串, 目标字符串)
select instr('helloworld','lo') from dual; --返回结果:4
-- 即“lo”同时出现,第一个字母“l”出现的位置
12 排名
rank over (partition by xxx字段 order by xxx字段)
dense_rank() over (partition by xxx字段 order by xxx字段)
row_number() over(partition by xxx字段 order by xxx字段)
区别 第一种1 2 2 4 5 第二种1 2 2 3 4 第三种强制 1 2 3 4 5
partition by 分类 相当于排序的首要条件
详见:https://blog.csdn.net/weixin_34100227/article/details/93582329