本文共 3153 字,大约阅读时间需要 10 分钟。
这类函数改变字符的大小写。
INITCAP
将每个单词的第一个字母大写,其它字母变为小写返回。单词由空格、控制字符、标点符号等非字母符号限制。 这类函数控制字符。
字符串下角标从1
开始。 SUBSTR
(取字符串开始的下角标,取字符串的长度)
INSTR
用于求某字符串在指定字符串中(首次)出现的位置。如果不存在返回0
。
LPAD
表示用x
位来显示a
数据,如果a
数据不足x
位,用指定字符进行左填充。
trim
一般都是用在删除字符串首尾的空格。也可以用来删除字符串首尾的指定字符。并且trim
指定删除的字符串只能是单个字符。如 trim('字符1' from '字符串2')
,字符1
只能是单个字符。
个位数的下标为0
。
ROUND(45.926) = ROUND(45.926,0) 46ROUND(45.926, 2) 45.93
TRUNC(45.926) =TRUNC(45.926,0) 46TRUNC(45.926, 2) 45.92TRUNC(45.926, -2) 0TRUNC(45.926, -1) 40(保留十位,后面截去,补0)
MOD(1600, 300) 100
Oracle
中的日期型数据实际含有两个值: 日期和时间。
函数SYSDATE
返回: 日期、时间。
在日期上加上或减去一个数字结果仍为日期。
两个日期相减返回日期之间相差的天数。 (日期不允许做加法运算,无意义)
可以用数字除24
来向日期中加上或减去天数。
表达式 | 含义 |
---|---|
yyyy | 年 |
mm | 月 |
dd | 日 |
day | 星期 |
hh | 小时 |
mi | 分钟 |
ss | 秒 |
ROUND
四舍五入年份按1-6月和7-12月四舍五入到最近的 几几年1月 ROUND
四舍五入月份按1-15日和16-30日四舍五入到最近的 几月1日
ROUND
四舍五入天数按**周一至周三 和 周四至周日 **四舍五入到最近的 周日
隐式: Oracle
自动完成下列转换
SELECT employee_id,hire_dateFROM employeesWHERE TO_CHAR(hire_date,'yyyy/mm/dd')='1994/06/07';
SELECT TO_CHAR(12345678.99,'L999,999,999.99') FROM dual;
符号 | 含义 |
---|---|
9 | 数字 |
0 | 零 |
$ | 美元符 |
L | 本地货币符号 |
. | 小数点 |
, | 千位符 |
SELECT employee_id,hire_dateFROM employeesWHERE TO_DATE('1994/06/07','yyyy/mm/dd')=hire_date;
TO_NUMBER('¥1,234,567,890.00','L999,999,999,999.99')FROM dual
这些函数适用于任何数据类型,同时也适用于空值:
将空值转换成一个已知的值,可以使用的数据类型有日期、字符、数字。
SELECT last_name,NVL(TO_CHAR(department_id),'没有部门')FROM employees;
expr1不为NULL,返回expr2;为NULL,返回expr3。
SELECT employee_id,NVL2(commission_pct,commission_pct+0.015,0.01)FROM employees;
相等返回NULL,不等返回expr1 。
SELECT first_name,LENGTH(first_name) "expr1", last_name,LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name),LENGTH(last_name)) resultFROM employees;
与NVL
相比的优点在于COALESCE
可以同时处理交替的多个值。如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE
。
SELECT last_name, COALESCE(commission_pct,salary,10) commFROM employeesORDER BY commission_pct;
在 SQL
语句中使用IF-THEN-ELSE
逻辑有两种方法:CASE
表达式;DECODE
函数。
CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]END
SELECT last_name,job_id,salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY"FROM employees;
若expression=search1
,则结果为 result1
DECODE (col|expression,search1,result1, [,search2,result2,...,] [,default])
SELECT last_name,job_id,salary, DECODE(job_id,'IT_PROG',1.10*salary, 'ST_CLERK',1.15*salary, 'SA_REP',1.20*salary, salary) REVISED_SALARYFROM employees;
单行函数可以嵌套。
嵌套函数的执行顺序是由内到外。
转载地址:http://bgiwi.baihongyu.com/