Oracle函数(一)


写在文章前面,有些函数可能会因为不同版本而导致非通用,该文章根据11g编写

截取

SUBSTR(ch,pos,length)

其中ch为即将要截取的字符串,pos为截取字符串的开始位置,length为要截取的长度
(1) SUBSTR(ch,pos,length)
这是最基本的函数应用,从第pos个字符开始截取ch,截取长度为length
eg:
SUBSTR(‘abcdefg’, 0, 2),从第0个字符开始截取’abcdefg’,截取长度为2,最终结果为ab

SELECT SUBSTR('abcdefg', 0, 2) AS content FROM dual

![在这里插入图片描述](https://img-blog.csdnimg.cn/5887eb0c341643d590e8370479f07c88.png
SUBSTR(‘abcdefg’, 1, 2),从第1个字符开始截取’abcdefg’,截取长度为2,最终结果为ab

SELECT SUBSTR('abcdefg', 1, 2) AS content FROM dual

![在这里插入图片描述](https://img-blog.csdnimg.cn/5887eb0c341643d590e8370479f07c88.png
注意:这里可以发现,pos为0或者为1的结果是一样的,那是因为第0个字符和第1个字符是一样的
SUBSTR(‘abcdefg’, 2, 2),从第2个字符开始截取’abcdefg’,截取长度为2,最终结果为bc

SELECT SUBSTR('abcdefg', 2, 2) AS content FROM dual

![请添加图片描述](https://img-blog.csdnimg.cn/65e756475c1742c0a2b6f06fd76a7f39.png

变形

以上的例子都是从正数第几个字符开始截取,当然也可以从倒数第几个字符开始截取
eg:
SUBSTR(‘abcdefg’, -4, 2),从倒数第4个字符开始截取’abcdefg’,截取长度为2,最终结果为de

SELECT SUBSTR('abcdefg', -4, 2) AS content FROM dual

SUBSTR(ch,pos)

其实length并没有被省略,当不输入length的时候,它默认是到字符串最后一位
SUBSTR(‘abcdefg’, 2,),从第2个字符开始截取’abcdefg’,截取到字符串最后,最终结果为bcdefg

SELECT SUBSTR('abcdefg', 2) AS content FROM dual

变形

eg:
SUBSTR(‘abcdefg’, -4),从倒数第4个字符开始截取’abcdefg’,截取到字符串最后,最终结果为defg

SELECT SUBSTR('abcdefg', -4, 2) AS content FROM dual

拼接

使用||进行拼接

eg:
拼接ab、cd、ef字符串为abcdef

SELECT 'ab' || 'cd' || 'ef' AS content FROM dual

使用CONCAT函数(CONCAT(ch1,ch2))

拼接abc、def字符串为abcdef

SELECT CONCAT('abc', 'def') AS content FROM dual

转字符

TO_CHAR(x)

将数值或时间等非字符串类型,转为字符串,并且可以进行数据的格式化
eg:

SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS content FROM dual

结果为:

SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM') AS content FROM dual

结果为:
在这里插入图片描述

转时间

TO_DATE(ch, fmt)

将数据根据fmt格式转换ch为时间类型
将字符串20221214060606根据yyyy-mm-dd hh24:mi:ss转换为时间格式

SELECT TO_DATE('20221214060606', 'yyyy-MM-dd hh24:mi:ss') AS content FROM dual

结果为:
在这里插入图片描述

判空

NVL(expr1, expr2)

如果expr1为NULL,则返回expr2,否则返回expr1

NVL2(expr1, expr2, expr3)

如果expr1为NULL,则返回expr3,否则返回expr2

排序

ORDER BY

★order by的基础需要区分descasc前者为从大到小后者为从小到大
★多个字段并列在order by后面则表示根据多个字段排序,比如order by createTime, updateTime的意思为先根据createTime排序再根据updateTime排序,默认为desc排序。

如果排序数据为空

根据createTime倒序排序,如果为空则根据updateTime排序
ORDER BY createTime DESC NULLS LAST, updateTime DESC NULLS LAST

将排序数据转为数字进行排序

ORDER BY viewNum+0 DESC NULLS LAST, like_num+0 DESC NULLS LAST

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值