SQL学习笔记——Oracle常用函数

1. SUBSTR(string,start,count) 截取子字符串,从start开始,取count个,返回截取的字符串
参数:
string:原字符串;
start:截取开始位置;
count:截取长度
例:
SQL> select SUBSTR('abcdefghijk',2,5) as str  from dual;
STR
-----
bcdef

2. UPPER(str) 返回字符串,并将所有的字符大写
例:
SQL> select UPPER('abcdefghijk') as str  from dual;
STR
-----------
ABCDEFGHIJK

3. LOWER(str) 返回字符串,并将所有的字符小写
例:
SQL> select LOWER('ABCDEFGHIJK') as str  from dual;
STR
-----------
abcdefghijk

4. FLOOR(n) 对给定的数字取整数(取小于等于数值n的最大整数)
例:
SQL> select FLOOR(12.5986) as num  from dual;
       NUM
----------
        12

5. CEIL(n)  对给定的数字取整数(取大于等于数值n的最大整数)
例:
SQL> select CEIL(12.123) as num  from dual;
       NUM
----------
        13
        
6. ROUND(number,[decimal_places]) 按照指定的精度进行舍入
参数:
number : 欲处理之数值
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )
例:
SQL> select ROUND(12.123568,4) as num  from dual;
       NUM
----------
   12.1236

7. SIGN(n)取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
例:
SQL> select SIGN(100) as num1,SIGN(0) as num2,SIGN(-100) as num3 from dual;
      NUM1       NUM2       NUM3
---------- ---------- ----------
         1          0         -1

8. decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
该函数的含义如下:  
IF 条件=值1 THEN  
    RETURN(翻译值1)  
ELSIF 条件=值2 THEN  
    RETURN(翻译值2)  
    ......  
ELSIF 条件=值n THEN  
    RETURN(翻译值n)  
ELSE  
    RETURN(缺省值)  
END IF 
例如:
decode(字段或字段的运算,值1,值2,值3)  
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3  
(当然值1,值2,值3也可以是表达式)
SQL> select decode(SIGN(-100),1,'正数','负数或0') as de  from dual;
DE
----
正数

9 .ADD_MONTHS(times,months)  用于计算在时间x的Y个月后的时间值,要是Y的值为负数的话就是在这个时间点之前的时间值(这个时间减Y个月)
SQL> select add_months(sysdate,6) from dual;
ADD_MONTHS(SYSDATE,6)
---------------------
2018/11/25 18:48:33
SQL> select add_months(sysdate,-6) from dual;
ADD_MONTHS(SYSDATE,-6)
----------------------
2017/11/25 18:49:09

10. SYSDATE  用来得到系统的当前日期
SQL> select to_char(sysdate,'dd-mm-yyyy day') dt  from dual;
DT
--------------------
25-05-2018 星期五

11. TO_CHAR(date,'format') 日期格式转换
TO_CHAR(number,'format'); 数字格式转换
to_char(salary,'$99,99');  货币格式转换
to_char(4567,'xxxx');进制转换:将10进制转换为16进制
例:
SQL> select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') as s_time from dual;
S_TIME
-------------------
2018-05-25 19:00:08
select to_char(1234567890,'999,999,999,999.9999') as num  from dual;
NUM
---------------------
   1,234,567,890.0000
SQL> select TO_CHAR(123,'$99,999.9') as salary from dual;
SALARY
----------
    $123.0
SQL> select to_char(7896,'xxxx') from dual;
TO_CHAR(7896,'XXXX')
--------------------
 1ed8

12. TO_NUMBER(string[,format])将字符串转换为数字数据类型
例:
SQL> select to_number('12345') from dual; 
TO_NUMBER('12345')
------------------
             12345
SQL> select to_number('$12345.678', '$999999.999') as num from dual;
       NUM
----------
 12345.678
SQL> select to_number('19f','xxx') from dual;  
TO_NUMBER('19F','XXX')
----------------------

                   415

13.INITCAP(string) 将每个单词的第一个字母大写,其它字母变为小写返回
SQL> SELECT INITCAP('SQL Course') AS rt FROM dual;
RT
----------

Sql Course

14.CONCAT(str1,str2) 将两个字符串连接起来,形成一个字符串
SQL> SELECT CONCAT('Hello', 'World') AS rt FROM dual;
RT
----------
HelloWorld

15.LENGTH(str) 返回字符串的长度
SQL> SELECT LENGTH('HelloWorld') AS length FROM dual;
    LENGTH
----------
        10
        
16.INSTR(sourceStr,destStr,start,appearPosition)
参数:
sourceStr:代表源字符串;
destStr:代表想聪源字符串中查找的子串;
start:代表查找的开始位置,该参数可选的,默认为1;
appearPosition:代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;
例:
SQL> SELECT INSTR('HelloWorld', 'W') AS rt FROM dual;
        RT
----------
         6

17.TRIM(str)/LTRIM(str)/RTRIM(str)
TRIM去除指定字符的前后空格
SQL> SELECT TRIM(' Hello World ') AS rt FROM dual;
RT
-----------
Hello World

18.LTRIM去除指定字符的前面空格
SQL> SELECT LTRIM(' Hello World ') AS rt FROM dual;
RT
------------
Hello World

RTRIM去除指定字符后面后空格
SQL> SELECT RTRIM(' Hello World ') AS rt FROM dual;
RT
------------
 Hello World
 
TRIM(leading|trailing|both str1 FROM str2)
去除字符串str2前面|后面|leading|trailing|both)的字符str1(仅能是一个字符),默认去除方式为both
注:TRIM去除字符只能是单个字符,要去除的字符str1若为字符集则报错:ORA-30001: 截取集仅能有一个字符
去除前后面一个字符
SQL> SELECT  TRIM('H' FROM 'HelloWorldH') AS rt FROM dual;
RT
---------
elloWorld

去除前面一个字符
SQL> SELECT TRIM(leading 'H' FROM 'HelloWorldH') AS rt FROM dual;
RT
----------
elloWorldH

去除后面一个字符
SQL> SELECT TRIM(trailing 'H' FROM 'HelloWorldH') AS rt FROM dual;
RT
----------
HelloWorld

LTRIM(str1,str2) 从左边开始执行,按照str2中的字符一个一个截掉str1中的字符,只要遇到str2中有的字符, str1中的字符都会被截掉, 直到在str1的字符中遇到str2中没有的字符为止函数命令才结束 .
RTRIM(str1,str2) 从右边开始执行,按照str2中的字符一个一个截掉str1中的字符,只要遇到str2中有的字符, str1中的字符都会被截掉, 直到在str1的字符中遇到str2中没有的字符为止函数命令才结束 .
例:
SQL> SELECT LTRIM('aabbcdedaddaa','abc') AS rt FROM dual;
RT
--------
dedaddaa

SQL> SELECT RTRIM('aabbcdedaddaa','abc') AS rt FROM dual;
RT
-----------
aabbcdedadd

19.LPAD(string,n,pad_string) 在string左边填充一些特定的字符
RPAD(string,n,pad_string) 在string右边填充一些特定的字符
参数:
string:可是字符或者参数
n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右(RPAD:从右到左)的n个字符;
pad_string:是个可选参数,这个字符串是要粘贴到string的左边(RPAD:右边),如果这个参数未写,lpad函数将会在string的左边(RPAD:右边)粘贴空格。
例:
SQL> SELECT LPAD(2400,10,'*')  AS rt FROM dual;
RT
----------
******2400
SQL> SELECT RPAD(2400,10,'*')  AS rt FROM dual;
RT
----------
2400******
SQL> SELECT LPAD(2400,10)  AS rt FROM dual;
RT
----------
      2400
SQL> SELECT RPAD(2400,10)  AS rt FROM dual;
RT
----------
2400      


猜你喜欢

转载自blog.csdn.net/denglishang/article/details/80452497