2021.10.27
单行函数
一条记录对应一个输出

字符函数

LOWER:转为小写

UPPER:转为大写

INITCAP:首字母转为大写

sql大于小于走索引吗_日期函数


常见用法:查询某未知大小写字符串,将其全部转为小写/大写

sql大于小于走索引吗_sql大于小于走索引吗_02

字符控制函数

CONCAT:连接

SUBSTR:求子字符串,从第1位开始,长度为5

LENGTH:求长度

INSTR:查找某个字符在原字符串中的位置

LPAD/RPAD:将字符串向左/右补齐至十位,添加字符’*’

TRIM:去除首尾部分的指定字符

REPLACE:去除所有指定字符

sql大于小于走索引吗_oracle_03

数字函数

ROUND/TRUNC:取小数点后指定位数

MOD:求余数

sql大于小于走索引吗_oracle_04


注意:ROUND/TRUNC第二个参数可以取负数值,即小数点前位数

sql大于小于走索引吗_sql大于小于走索引吗_05

日期函数

sql大于小于走索引吗_sql_06


函数SYSDATE返回日期,时间

sql大于小于走索引吗_字符串_07


上图中由于格式问题,需要使用转换函数才能正确显示

日期的数学运算

1.可以直接加上或减去数字

2.两日期相减可以返回相差的天数,两日期不允许做加法运算

常用的日期函数

MONTHS_BETWEEN(a,b):返回ab两月之间相差的月数

ADD_MONTHS(sysdate,2):现在时间2021.10.27+2得到2021.12.27(可以取负数)

NEXT_DAY(sysdate,‘星期日’):返回最近的一个周日的日期

LAST_DAY(sysdate)-1:返回本月倒数第二天

ROUND/TRUNC(sysdate,‘year’):按照年取舍,可填入year(yyyy),month(mm),dd(日),day(星期数),hh,mi,ss

转换函数

隐式转换:
varchar2 or char与number/date之间互相转换
可以实现’1’ + 1
sysdate + ‘1’
与大多数编程语言不同

显示转换:

to_char转化日期

to_char(sysdate,‘yyyy-mm-dd’)

但在需要输入字符串时需要添加双引号

to_char(sysdate,‘yyyy"年"mm"月"dd"日"’)

sql大于小于走索引吗_sql大于小于走索引吗_08


to_char转化number为char

to_char(1234.56,‘99,999.99’) = 1,234.56

to_char(1234.56,‘00,999.99’) = 01,234.56

参数为9时,显示number对应位数上存在的值,为0时若存在则显示,不存在则自动补0

常用情况,to_char(number,‘99999990.999999’),用于显示小数,若数大于1则显示小数点前的数字值,若小于1则小数点前自动补0

to_char($1.1,‘9990.99’)=$1.1

to_char(L1.1,‘9990.99’)=¥1.1,输出本地的货币符

冷知识:康师傅说人民币符来源于交换“羊”,淘宝中客服虽然称呼人“亲”,但实际想的却是“¥”

to_number转化char为number
to_number(‘¥001.1’,‘L009.9’) = 1.1
参数需要一一对应

通用函数

对于所有数据类型均可使用,同时也适用于空值
NVL(a,b):将a值转化为b
常用情况,对空值进行计算,上一章中提到数据库中默认空值的计算仍为空,不作为0运算,可以添加NVL(null,0)作为计算
同时,可以对于空值直接显示为指定字符串:NVL(null,‘不存在数据’)

注意:若null中含有不一致的类型,如number型,不能直接转化为字符串类型’不存在数据’,需要添加to_char进行转化

NVL2(a,b,c):a不为null则返回b;为null则返回c

NULLIF(a,b):相等返回null,不等返回a

COALESCE(a,b,c):a空返回b,b空返回c

条件表达式

if-then-else逻辑
case表达式

case a when b then c*2
		    when d then c*3
		    else c*4 end new_c

当a为b时执行c2,为d时执行c3,否则执行c*4,并以end作为结束

SQL最后将c的新值作为new_c列进行输出

sql大于小于走索引吗_日期函数_09

decode函数
将上式中所有内容放入括号内

decode(a,b,c*2
         d,c*3
         c) new_c

sql大于小于走索引吗_sql_10

嵌套函数

function1(function2(function3(a,b)))
从内到外进行运算

总结

赶鸭子上架,完全就是先用再学,时间太紧了简直