oracle单行超2499,Oracle 开发——单行函数

单行函数

本次文章主要学习

-理解函数的作用

-掌握单行函数的五大分类函数

-其中,会一直用到到的虚表

DUAL:是一张虚表,不能保存任何数据,只有一个字段,一行记录。当我们不希望从任何表中读取数据,同时又想利用SQL引擎中的计算表达式的能力帮我们运算时,就可以使用DUAL表

SQL函数概述

055d9704e4e5bca894d6ad9d9df709bc.png

SQL函数分类主要分为两种

-单行函数

-多行函数

696b737f26dce0d2c93d9e91007bca7c.png

单行函数语法

语法:

函数名[(参数1,参数2,…)]

其中的参数可以是以下之一:

变量

列名

表达式

单行函数特征

单行函数特征

单行函数对单行操作

每行返回一个结果

有可能返回值与原参数数据类型不一致

单行函数可以写在SELECT、WHERE、ORDER BY子句中

有些函数没有参数,有些函数包括一个或多个参数

函数可以嵌套

单行函数分类

分为5大类

字符函数

数值函数

日期函数

转换函数

通用函数

字符函数

字符函数

- 字符函数:主要指参数类型是字符型,不同函数返回值可能是字符型或数值型。

大小写函数

LOWER(列名|表达式)

将大写或大小写混合的字符转换成小写

select lower('ABCDE')

from dual;

ea2eb3c175247dbee5554d8e9972fe03.png

UPPER(列名|表达式)

将小写或大小写混合的字符转换成大写

select upper('abcde')

from dual;

228f741bc5e5889abf97d8954722fe5f.png

INITCAP(列名|表达式)

将每个单词的第一个字母转换成大写,其余的字母都转换成小写

select initcap('oycp oyyyyy')

from dual;

679588eb03cb7b8ba0589ce72d115e60.png

字符处理函数

CONCAT(column1|expression1,column2|expression2)

连接两个值 ,等同于||

select concat(ename,sal)

from emp;

ccec6523c3b1c5de94265ffe15a26d5a.png

SUBSTR (column|expression,n1[,n2])

返回第一个参数中,从第n1位开始,长度为n2的子串。

如果n2省略,取第n1位开始的所有字符。

如果n1是负值,表示从第一个参数的后面第abs(n1)位开始向右取长度为n2的子串。

select substr('abcdefg',1,3)

from dual;

657c4e147da8cff49c5f3efc98a061d6.png

LENGTH(column | expression)

取字符长度

select length('abcdefg')

from dual;

c55f6c84487a72af4b8a20e3f215872e.png

INSTR(s1,s2,[,n1],[n2])

返回s1中,子串s2从n1开始,第n2次出现的位置。n1,n2默认值为1

select instr('abcdefg','c')---3

from dual;

4d4e282d3bcdf723322656079e7f4a1a.png

LPAD(s1,n1,s2)

返回s1被s2从左面填充到n1长度后的字符串。

select lpad('abc',11,'*')

from dual;

b8982a53712053f6011d59659705df99.png

RPAD(s1,n1,s2)

返回s1被s2从右面填充到n1长度后的字符串。

select rpad('abc',11,'*')

from dual;

31ab7071de95788ce073026e8c3d687a.png

TRIM

去除字符串头部或尾部(头尾)的字符格式:TRIM(leading | trailing | both trim_character From trim_source)

select trim('c' from 'abcdefccccccccc')

from dual;

![在这里插入图片描述](https://www.icode9.com/img/ll/?i=20201230190643897.png)

REPLACE(s1,s2,s3)

把s1中的s2用s3替换。

select replace('abcdef','c','p')----abpdef

from dual;

2988081df51df1decfa3c28424baf51d.png

数值函数

ROUND

将列或表达式所表示的数值四舍五入到小数点后的第n位。

格式: ROUND(column| expression, n)

ROUND(45.926, 2) -> 45.93

select round(12.4846,2)

from dual;

4ee1226d08c7dca6f4f9f8622e2c5283.png

TRUNC

将列或表达式所表示的数值截取到小数点后的第n位。

格式:TRUNC(column| expression, n)

TRUNC(45.926, 2) -> 45.92

select trunc(12.4846,2)

from dual;

9e664f6c86744967037ec67443fe2116.png

MOD

取m除以n后得到的余数

格式:MOD(m,n)

MOD(1600, 300) ->100

select mod(1600,300)

from dual;

61b45760f4e2ade607117eaebdbe3c6f.png

常用日期函数

SYSDATE

返回系统日期

select sysdate

from dual;

5929eac1fff9c037f73eeaf2dd3885d5.png

MONTHS_BETWEEN

返回两个日期类型数据之间间隔的自然月数

SELECT ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months

FROM emp

ORDER BY months;

2713b19734e92b58cb13e6b7a55398eb.png

ADD_MONTHS

返回指定日期加上相应的月数后的日期

SELECT ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date

FROM emp

WHERE hiredate>'01-1月-82';

b4a81d9705e2f95d135dfd672f5c2b16.png

NEXT_DAY

返回某一日期的下一个指定日期

SELECT NEXT_DAY('02-2月-06','星期一') NEXT_DAY

FROM DUAL;

a4cf14f1af9bafd77f9ea9328529c017.png

LAST_DAY

返回指定日期当月最后一天的日期

SELECT LAST_DAY('02-2月-06') "LAST DAY"

FROMDUAL;

70ea60005f55771d2ab996d6b3db47c0.png

ROUND(date[,‘fmt’])

将date按照fmt指定的格式进行四舍五入,fmt为可选项,如果没有指定fmt,则默认为DD,将date四舍五入为最近的天。

格式码:世纪CC,年YY,月MM,日DD,小时HH24,分MI,秒SS

SELECT empno, hiredate,

ROUND(hiredate, 'MONTH')

FROM emp

WHERE SUBSTR(hiredate,-2,2)='81'

0653ad57bad9ed8bfbcf584849c17a14.png

TRUNC(date[,‘fmt’])

将date按照fmt指定的格式进行截断,fmt为可选项,如果没有指定fmt,则默认为‘DD’,将date截取为最近的天。

SELECTempno, hiredate, TRUNC(hiredate, 'MONTH')

FROMemp

WHERESUBSTR(hiredate,-2,2)='81';

2dd72c3061735d11615b236d5aae33f7.png

EXTRACT

返回日期类型数据中的年份、月份或者日

SELECT ename, hiredate,

EXTRACT (MONTH FROM HIREDATE) MONTH

FROM emp

WHERE deptno= 10;

82054230d17ac892feceff1f87d0a4b4.png

转换函数

分为两种

隐式数据类型转换

显式数据类型转换

隐式数据类型转换规则

不同的数据类型之间关联,如果不使用显式转换函数,则它会根据以下规则对数据进行隐式转换:

对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型

对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型

当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型

当比较字符型和日期型的数据时,oracle会把字符型转换为日期型

用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型

如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等

显式数据类型转换

通常是在字符类型、日期类型、数值类型之间进行显式转换。主要有3个显式转换函数:

TO_CHAR

TO_NUMBER

TO_DATE

TO_CHAR 用于日期型

日期格式模型:

必须用单引号引起来并且是大小写敏感的

可以包含任何有效的日期元素

使用逗号将日期型数据与日期型格式模型分隔开

SELECT ename,TO_CHAR(hiredate,'MM/YY') month_hired

FROM emp;

e648ad908e8266dce4b0814794aad581.png

日期格式模型的元素

5aee3a78230f9bf321a5196c35ac5920.png

TO_CHAR 用于数值型

通过在TO_CHAR中使用以下形式可以把数值型数据转化成变长的字符串:

415578281727a2906289d311de04c2fc.png

SELECTTO_CHAR(sal,'$99,999') SALARY

FROMemp

WHEREename = 'SCOTT';

a818bd20dba5c3ef4bf88303d355f1cc.png

TO_NUMBER 函数

使用TO_NUMBER将一个字符串转换成数值型数据

TO_NUMBER(char[, 'fmt'])

注意:要转换的char类型数据必须是由数字组成的字符串,格式码中相应的格式必须要和char中的格式匹配。

TO_DATE 函数

select to_date('2020/12/30','YYYY/MM/DD')

from dual

204bafc79cabcc017a1cc95b8f5cc396.png

通用函数

与空值(NULL)相关的一些函数,完成对空值(NULL)的一些操作。主要包括以下函数:

NVL

语法:NVL (expr1,expr2)

如果expr1不是null,返回expr1,否则返回expr2

NVL2

语法:NVL2(expr1,expr2,expr3)

如果expr1不是null,返回expr2,否则返回expr3

NULLIF

语法: NULLIF(expr1,expr2)

比较两个表达式,如果相等,返回null,否则,返回第一个表达式

COALESCE

COALESCE (表达式1, 表达式2, … 表达式n)函数是对NVL函数的扩展。COALESCE函数的功能是返回第一个不为空的参数,参数个数不受限制。

SELECT ename, COALESCE(comm, 0) comm , deptno

FROM emp;

4b7cb41017a7b07e588e03d051cef629.png

条件处理函数:

CASE表达式

SELECT ename, deptno,

(CASE deptno

WHEN 10 THEN '销售部'

WHEN 20 THEN '技术部'

WHEN 30 THEN '管理部'

ELSE '无' END)

deptname

FROM emp;

36171e7423a39291985ba290dde02673.png

DECODE

SELECT ename, deptno,

decode(deptno,

10,'销售部',

20,'技术部',

30 , '管理部',

'无') deptname

FROM emp;

dde507de5d9437a08dbdc45d1fcb917e.png

收工,谢谢

标签:字符,函数,单行,SELECT,dual,Oracle,n1,select

来源: https://blog.csdn.net/qq_45187600/article/details/111996391

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值