oracle 查询 字符函数,oracle简单查询之函数查询

四、函数查询

4.1、概要

​ 函数是一种有零个或多个参数并且有一个返回值的程序,函数主要分为两大类单行函数,多行函数(聚合函数)

4.2、单行函数

4.2.1、定义

​ 单行函数: 对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果。

4.2.2、分类

字符函数

数值函数

日期函数

转换函数

通用函数

4.2.3、字符函数

4.2.3.1、UPPER

说明

将输入的字符串变为大写返回;

作用

在一般的使用之中,用户输入数据的时候去关心数据本身存放的是大写还小写

语法

upper(列 | 字符串)

示例代码

1、将abcd改变成大写

SELECT UPPER("abcd") FROM dual

2、查询姓名为simth的员工信息

SELECT *

FROM emp

WHERE ename = UPPER("&str");

4.2.3.2、LOWER

说明

将输入的字符串变为小写返回

语法格式

LOWER(字符串 | 列)

示例代码

1、将员工姓名转化成小写显示

SELECT lower(ename)

FROM emp

4.2.3.3、REPLACE

说明

字符串进行替换

语法格式

REPLACE(字符串 | 列)

示例代码

使用字母"*"替换掉姓名中的所有字母"s"

SELECT REPLACE(ename,"S","*") FROM emp

4.2.3.4、LENGTH

说明

求出字符串的长度

语法格式

LENGTH(字符串 | 列)

示例代码

查询出每个雇员姓名的长度

SELECT LENGTH(ename)

FROM emp;

4.2.3.5、INITCAP

说明

首字母大写

语法格式

INITCAP(字符串 | 列)

示例代码

将员工的姓名全部大写字母开头

SELECT initcap(ename)

FROM emp;

4.2.3.6、SUBSTR

说明

字符串截取,开始点可以是正也可以是负,如果是负表示从后面开始截取 ,如果长度不写,默认截取到末尾

语法格式

SUBSTR(字符串 | 列,开始点, 长度)

示例代码

1、从开始点一直截取到结尾

SELECT SUBSTR("abcdefg",2) from dual; --bcdefg

2、从开始点截取到结束点,截取部分内容

SELECT SUBSTR("abcdefg",2,4) from dual;--bcde

3、要求截取每个雇员姓名的后2个字母

SELECT ename,SUBSTR(ename,LENGTH(ename)-1) FROM emp;

等价于

SELECT ename,SUBSTR(ename,-2) FROM emp;

4.2.4、数值函数

4.2.4.1、ROUND

说明

四舍五入的操作 默认保留0位

语法格式

ROUND(数字 | 列 [,保留小数的位数])

示例代码

SELECT ROUND(100.12),

ROUND(100.12 ,1) ,

ROUND(-100.56),

ROUND(-100.56,1),

ROUND(-100.567123,3)

FROM DUAL;

100 100.1 -101 -100.6 -100.567

4.2.4.2、TRUNC

说明

舍弃指定位置的内容

语法格式

TRUNC(数字 | 列 [,保留小数的位数])

示例代码

SELECT TRUNC(903.53567),TRUNC(-903.53567), TRUNC(903.53567,2), TRUNC(-90353567,-1)

FROM dual;

903 -903 903.53 -90353560

4.2.4.3、MOD

说明

取余数

语法

MOD(数字 1,数字2)

示例代码

SELECT MOD(10,3) FROM dual

4.2.5、日期函数

4.2.5.1、MONTHS_BETWEEN

说明

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

语法格式

MONTHS_BETWEEN(日期1,日期2)

示例代码

SELECT MONTHS_BETWEEN("1-6月 -87","1-5月 -87") FROM dual;

1

4.2.5.2、ADD_MONTHS

说明

在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期

语法格式

ADD_MONTHS(d,n)

示例代码

SELECT SYSDATE ,ADD_MONTHS(SYSDATE ,1) FROM DUAL;

4.2.5.3、LAST_DAY

说明

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

语法格式

LAST_DAY(d)

示例代码

SELECT SYSDATE,last_day(SYSDATE) FROM dual

4.2.6、转换函数

转换函数将值从一种数据类型转换为另外一种数据类型

4.2.6.1、TO_CHAR

说明

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

语法格式

TO_CHAR(d|n[,fmt])

示例代码

对日期的处理

SELECT TO_CHAR(SYSDATE,"YYYY"年"MM"月"DD"日" HH24:MI:SS") "date" FROM dual;

SELECT to_char(sysdate,"yyyy-mm-dd hh24 mi ss")FROM dual;

SELECT to_char(sysdate,"yyyy-mm-dd hh:mi:ss") FROM dual;

SELECT to_char(sysdate,"yyyy-mm-dd hh") FROM dual;

SELECT to_char(sysdate,"yyyy") FROM dual;

4.2.6.2、TO_DATE

说明

主要功能是将一个字符串变为DATE型数据

语法格式

TO_DATE(X,[,fmt])

示例代码

将字符串日期转化为年月日

SELECT TO_DATE("1986-07-25 ","yyyy-mm-dd") FROM dual;

25-7月 -86

将字符串日期+时间转化成年与日时分秒

SELECT TO_date("2015-12-25,13:25:59" "YYYY-MM-DD HH24:MI:SS") FROM dual;

2015-12-25 13:25:59

4.2.6.3、TO_NUMBER(字符串)

4.2.7、通用函数

4.2.7.1、NVL

说明

如果X为空,返回value,否则返回X

语法格式

NVL(X,VALUE)

示例代码

对工资是2000元以下的员工,如果没发奖金,每人奖金100元

SELECT ename,job,sal,NVL(comm,100) FROM emp WHERE sal<2000;

4.2.7.2、NVL2

说明

如果x非空,返回value1,否则返回value2

语法格式

NVL2(x,value1,value2)

示例代码

对EMP表中工资为2000元以下的员工,如果没有奖金,则奖金为200元,如果有奖金,则在原来的奖金基础上加100元

SELECT ENAME,JOB,SAL,NVL2(COMM,comm+100,200) "comm"

FROM EMP WHERE SAL<2000;

4.2.7.3、DECODE

说明

函数非常类似于程序中的if…else…语句,唯一不同的是DECODE()函数判断的是数值,而不是逻辑条件

语法格式

ECODE(数值 | 列 ,判断值1,显示值1,判断值2,显示值2,判断值3,显示值3,…)

示例代码

现在要求显示全部雇员的职位,但是这些职位要求替换为中文显示:

CLERK:办事员;

SALESMAN:销售;

MANAGER:经理;

ANALYST:分析员;

PRESIDENT:总裁;

SELECT empno,ename,job,DECODE(job,"CLERK","办事员","SALESMAN","销售人员","MANAGER","经理","ANALYST","分析员","PRESIDENT","总裁")

FROM emp;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值