oracle之在mybatis中常用的函数
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..net/weixin_34100227/article/details/93582329