mysql 单行函数_ORACLE单行函数的详细说明及代码演示

ORACLE单行函数的详细说明及代码演示

SQL语言中,常用的是数据库软件ORACLE,而在ORACLE中,有一些常用的单行函数,即操作一行数据,返回一个结果。

一.字符函数

字符函数是专门用来处理字符串数据的函数,比较常用的有以下有些

首先,我们先假设有一张员工表,名为EMP

1.转码函数

ASCII(A) 返回字符X的ASCII码

SQL> SELECT ASCII('A'), ASCII(ENAME) FROM EMP;

2.拼接函数

CONCAT(A,B) 用来拼接字符串A和B

注意:此函数工作中常用

SQL>SELECT CONCAT(EMPNO, ENAME) 拼接 FROM EMP;

解释:EMP表中的EMPNO, ENAME字段无空格拼接在一起

3.计算长度函数

LENGTH(A) 返回A的长度

SQL>SELECT ENAME, LENGTH(ENAME) FROM EMP;

解释: LENGTH()用来计算EMP表中ENAME字段的长度

4.大小写转换函数

LOWER(A) 将A转换成小写

UPPER(a) 将a转换成大写

SQL>SELECT UPPER(ENAME) , LOWER(ENAME) FROM EMP;

解释:EMP表中ENAME字段分别被转换成大写和小写

5.首字母大写函数

INITCAP(A) 将A字段的首字母大写显示出来

SQL>SELECT INITCAP(ENAME) FROM EMP;

解释:EMP表中ENAME字段的首字母被转换成小写

6.替换函数

REPLACE(A,a,b)

说明:在A字段中查找小a,并将a替换成b

SQL>SELECT ENAME, REPLACE(ENAME, 'A', '00') 替换 FROM EMP;

解释:EMP表中ENAME字段包含A的都被替换成00

7.逐个替换函数

TRANSLATE(A,aa,bb)

说明:在A字段中查找小aa,并将aa替换成bb

SQL>SELECT ENAME, TRANSLATE(ENAME, 'ABCD', '1234') FROM EMP;

解释:EMP表中ENAME字段包含ABCD的被逐个替换成1234;

8.去空字符函数

TRIM(’ X ')

说明:把X的两边空格去掉

SQL>SELECT TRIM(' hnnbb ') FROM dual;

结果:hnnbb

LTRIM(X[,TRIM_STR])

说明:把X的左边截去trim_str字符串,缺省截去空格

SELECT lTRIM(’ hnnbb ') FROM dual;

SQL>SELECT LTRIM(' hnnbb ') FROM dual;

结果:hnnbb

解释:hnnbb左边的空格被去除掉了,但右边的空格还存在。

RTRIM(X[,TRIM_STR]) FROM dual;

说明:把X的右边截去trim_str字符串,缺省截去空格

SELECT RTRIM(’ hnnbb ') FROM dual;

SQL>SELECT RTRIM(' hnnbb ') FROM dual;

结果:hnnbb

解释:hnnbb右边的空格被去除掉了,但左边的空格还存在。

9.截取函数

SUBSTR(X,start,[length])

说明:返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾

SQL>SELECT ENAME, SUBSTR(ENAME, 0, 2) FROM EMP;

解释:第一个EMP表中ENAME字段的数据,第二个是起始位置,第三个是截取几个字符;

注意:oracle起始位置0和1 是一样的

SQL>SELECT ENAME, SUBSTR(ENAME, 3) FROM EMP ;

解释:截取EMP表中ENAME字段数据第3个位置之后所有字符

10.查找函数

INSTR(X,Y,1)

说明:从X中查找Y,从第一个位置开始查找

SQL>SELECT ENAME, INSTR(ENAME, 'T', 1) from EMP;

解释:EMP表中ENAME字段,从第个位置开始查找T。

INSTR(X,Y,1,n)

说明:从X中查找Y,从第一个位置开始查找,n表示第几次出现

SQL>SELECT ENAME, INSTR(ENAME, 'A', 1, 2) FROM EMP;

小练习

计算 ‘#121#3#4#56#78#90#’ 第三个#号 到第六个#之间的数据?

思路:

1.计算第三位置+1

2.计算第六位置

3.第六-第三=截取的长度-1

SQL>SELECT SUBSTR('#121#3#4#56#78#90#',

INSTR('#121#3#4#56#78#90#', '#', 1, 3) + 1,

INSTR('#121#3#4#56#78#90#', '#', 1, 6) -

INSTR('#121#3#4#56#78#90#', '#', 1, 3) - 1)

FROM DUAL;

结果:4#56#78

二.数值函数

数值函数有可以单独的用来计算一些数值,接受数字参数,也可以用以表中某些字段列的计算,还可以是一个数字表达式。

MOD(X,Y)

X除以Y的余数

POWER(X,Y)

X的Y次幂

ROUND(X,Y)

X在第Y位四舍五入

ABS(X)

X的绝对值

SQRT(X)

X的平方根

POWER(X,Y)

X的Y次幂

TRUNC(X,Y)

取整

FLOOR(X)

小于或等于X的最大值

CEIL(X)

小于或等于X的最小值

三. 转换函数

1.TO_NUMBER(A)

说明:将一串字符型数字转换成数字型

SQL>SELECT TO_NUMBER('1231') + 100 FROM DUAL;

结果:1131

若在ORACLE中直接用以下代码

SQL>SELECT '1231' + 100 FROM DUAL;

结果依旧是1131,因为ORACLE自动替你转换了。但是我们应该避免使用这样的方法计算,因为会导致索引失效;(索引我们理解为目录,加快查询速度)

2.TO_CHAR(a,[fmt])

把日期和数字转换为制定格式的字符串。其中,Fmt是格式化字符串

以下为代码演示,后面的中文为转换的格式注解

SQL>SELECT TO_CHAR(SYSDATE, 'yyyy') 年,

TO_CHAR(SYSDATE, 'mm') 月,

TO_CHAR(SYSDATE, 'dd') 天,

TO_CHAR(SYSDATE, 'day') 星期几,

TO_CHAR(SYSDATE, 'q') 季度,

TO_CHAR(SYSDATE, 'w') 当月第几周,

TO_CHAR(SYSDATE, 'ddd') 当年第几天,

TO_CHAR(SYSDATE, 'ww') 这一年的第几周,

TO_CHAR(SYSDATE, 'hh24') 时,

TO_CHAR(SYSDATE, 'mi') 分,

TO_CHAR(SYSDATE, 'ss') 秒,

TO_CHAR(SYSDATE, 'd') 本周第几天

FROM DUAL;

以上代码一般用于从日期里面提取详细数据使用,工作中非常常用!

3.TO_DATE(X,[fmt])

ci此函数用于将一个字符串以fmt格式转换成一个日期类型

提取日期小知识

不区分上下半年,提取某月,某月中的某天,某周

代码演示:

SQL>SELECT TRUNC(SYSDATE,'yyyy')年,TRUNC(SYSDATE,'mm')月,TRUNC(SYSDATE,'dd')天,TRUNC(SYSDATE,'day')周 FROM dual;

区分上下半年,提取某月,某月中的某天,某周

代码演示:

SQL>SELECT round(SYSDATE,'yyyy')年,round(SYSDATE,'mm')月,round(SYSDATE,'dd')天,round(SYSDATE,'day')周 FROM dual;

总结

这些单行的函数在是SQL语言中是非常基础的,但是我们要非常熟悉他们的应用。读者可自行在ORACLE中演示以上代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值