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的基础需要区分desc和asc前者为从大到小后者为从小到大。
★多个字段并列在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