您的位置:首页 > 数据库 > Oracle

oracle sql 常用单行函数

2017-06-05 14:48 477 查看
  上一篇对oracle sql常用聚合函数进行了描述,这篇将对常用的单行函数进行描述。

  单行函数和聚合函数的区别是:单行函数每次只能对表中的一行记录进行作用。可以分为以下几类:

         1)字符函数

         2)数值函数

         3)日期函数

         4)转换函数

1)常用字符函数有:initcap、upper、lower、concat、instr、length、trim、replace、substr等。

lower(x)函数主要将参数x中的所有字符小写。

SQL> select * from dept;

DEPTNO DNAME          LOC
---------- -------------- -------------
10 ACCOUNTING     NEW YORK
20 RESEARCH       DALLAS
30 SALES          CHICAGO
40 OPERATIONS     BOSTON

SQL> --将dept表中DNAME列小写
SQL> select lower(dname) from dept;

LOWER(DNAME)
--------------
accounting
research
sales
operations


upper(x)函数主要将参数x中的所有字符大写。

SQL> --将字符串'hello world'大写
SQL> select upper('hello world') from dual;

UPPER('HELL
-----------
HELLO WORLD


initcap(x)函数主要将参数x中的所有单词的首字母大写。

SQL> --将字符串'hello world'中每个单词的首字母大写
SQL> select initcap('hello world') from dual;

INITCAP('HE
-----------
Hello World


concat(x,y)函数用于连接字符串x和y。

SQL> --将字符串'hello'与'world'相连(无空格)
SQL> select concat('hello','world') from dual;

CONCAT('HE
----------
helloworld


instr(x,y,p1,p2)函数用于查询从指定的位置p1开始,字符串y在字符串x中第p2次出现时的位置。默认p1=1,p2=1.

SQL> select instr('hello world','l',4,2) from dual;

INSTR('HELLOWORLD','L',4,2)
---------------------------
10
length(x)函数统计字符串x的长度(包含空格)。

SQL> select length('hello world') from dual;

LENGTH('HELLOWORLD')
--------------------
11

trim(both|leading|trailing ch from string2) 函数用于将string2中的两端|前端|后端字符ch(不能是字符串)去除。

SQL> select trim(both '1' from '123321') from dual;

TRIM
----
2332

SQL> select trim(leading '1' from '123321') from dual;

TRIM(
-----
23321

SQL> select trim(trailing '1' from '123321') from dual;

TRIM(
-----
12332
replace(string,str_old,str_new)函数用于将字符串string中的子串str_old替换成str_new。

SQL> select replace('hello world','l','why') from dual;

REPLACE('HELLOWOR
-----------------
hewhywhyo worwhyd


substr(string,p1,p2)函数用于从字符串string的p1处截取长度为p2的子串。p1>=0都表示从字符串左端p1处开始往右截取(0和1都表示从第一位开始),p1<0则从右端第p1处开始往右截取。

SQL> select substr('hello world',0,2) from dual;

SU
--
he

SQL> select substr('hello world',-3,2) from dual;

SU
--
rl


2)常用的数值函数有:abs,acos,cos,ceil,round,floor,log,mod,power,sqrt,trunc。比较简单不详细介绍,结果如下。

SQL> --计算x的绝对值
SQL> select abs(-1.1) from dual;

ABS(-1.1)
----------
1.1

SQL> --计算x的余切值
SQL> select acos(1) from dual;

ACOS(1)
----------
0

SQL> --计算x的余弦值
SQL> select cos(1) from dual;

COS(1)
----------
.540302306

SQL> --计算x的向上取整值
SQL> select ceil(3.14) from dual;

CEIL(3.14)
----------
4

SQL> --计算x的向下取整值
SQL> select floor(3.5) from dual;

FLOOR(3.5)
----------
3

SQL> --计算x的四舍五入取整值
SQL> select round(3.5) from dual;

ROUND(3.5)
----------
4

SQL> --计算以2为底4的对数值
SQL> select log(2,4) from dual;

LOG(2,4)
----------
2

SQL> --计算2的4次幂
SQL> select power(2,4) from dual;

POWER(2,4)
----------
16

SQL> --计算以5的平方根
SQL> select sqrt(5) from dual;

SQRT(5)
----------
2.23606798

SQL> --将数3.1415在第二位截断
SQL> select trunc(3.1415,2) from dual;

TRUNC(3.1415,2)
----------------
3.14


3)常用的日期函数有:add_months,last_day,months_between,extract。
add_months(x,y) 用于在某个时间x上加上额外的月份数y。

SQL> --在当前时间上加上额外3个月
SQL> select sysdate,add_months(sysdate,3) from dual;

SYSDATE        ADD_MONTHS(SYS
-------------- --------------
05-6月 -17     05-9月 -17
last_day(x)用于计算当前月的最后一天。

SQL> select last_day(sysdate) from dual;

LAST_DAY(SYSDA
--------------
30-6月 -17

months_between(x,y)用于计算两个日期间的月份差值数

SQL> select months_between(sysdate,add_months(sysdate,-3)) from dual;

MONTHS_BETWEEN(SYSDATE,ADD_MONTHS(SYSDATE,-3))
----------------------------------------------
3
EXTRACT(fmt FROM d),提取日期中的特定部分。

fmt 为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。其中 YEAR、MONTH、DAY可以为 DATE 类型匹配,也可以与 TIMESTAMP 类型匹配;但是 HOUR、MINUTE、SECOND 必须与 TIMESTAMP 类型匹配。
HOUR 匹配的结果中没有加上时区,因此在中国运行的结果小 8 小时。
4)转换函数
转换函数将值从一种数据类型转换为另外一种数据类型。常见的转换函数有:
1、TO_CHAR(d|n[,fmt]):把日期和数字转换为制定格式的字符串。Fmt是格式化字符串
TO_DATE(X,[,fmt])把一个字符串以fmt格式转换成一个日期类型
TO_NUMBER(X,[,fmt])把一个字符串以fmt格式转换成一个数字类型
 5)通用函数
NVL(X,VALUE)如果X为空,返回value,否则返回X
NVL2(x,value1,value2) 如果x非空,返回value1,否则返回value2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: