SQL中简单函数介绍

一、字符串函数

upper和lower和initcap

作用:对大小写进行转换,大写upper、小写lower、首字母大写initcap

SQL>select lower('qijiQIJI'),UPPER('QIJIqiji'),INITCAP('lINUX') from dual;

INSTR查询D在第几个字符

SQL>select INSTR('1ADSDDSSDSD','D') from dual; 

select INSTR('1ADSDDSSDSD','D',1,2) from dual;   ----从第一个字符开始查起,第2个D在第几个字符

 

 LPAD 以空格从左向右补充字符长

RPAD 以空格从右向左补充字符长

SQL>select lpad('what is this',5),lpad('what is this',25),lpad('what is this',25,'-') from dual;   ---用指定的字符串(what is this)从左补齐多少个字符(5个)字符串不够的用-补齐,what is this',5,'-'

 trim 去空格的

replace 替换

SQL>select replace('wwwjkdkdddww is ssseess','w','-') 替换结果为 from dual;  ---将w替换成-
SQL>select replace('wwwjkdkdddww is ssseess','www','http') 替换结果为 from dual;  ---将www替换成http

二、数字函数

round 四舍五入函数

SQL>select round(1.52),trunc(1.32) from dual;
SQL>select round(1.65222392,2),trunc(1.6672392,3) from dual; ----保留2位小数,保留3位小数

      

trunc 截断函数,和rount唯一的区别是不进行四舍五入

mod 求余数操作也叫求模

三、日期函数

系统日期(日期格式)

sysdate和current_date一样,都可以返回系统日期

SQL>select sysdate from dual;

 系统默认日期格式是日月年,如上,两种办法修改成自己想要的日期格式

在oracle中,如何让日期显示为“年-月-日-时-分-秒”

  1、在会话级别运行命令 alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS' ;只在会话级别起作用。

  2、在文件$ORACLE_HOME/sqlplus/admin/glogin.sql 中加入alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS',这样每个会话都起作用。

  3、修改初始化参数:alter system set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'

  4、设置环境变量vim .bash_profile 加两行

    export NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS"

    export NLS_LANG ="AMERICAN_CHINA.ZHS16GBK" 或

    export NLS_LANG ="AMERICAN_AMERICA.ZHS16GBK"  或

    export NLS_LANG ="export NLS_LANG= AMERICAN"

  

用日期计算

SYS@hx2> select sysdate +1,sysdate from dual;

SYSDATE+1 SYSDATE
--------- ---------
02-DEC-20 01-DEC-20

 

日期函数

四、转换函数

隐式数据类型转换

  将数字存储在字符列,字符类型的字段值应该加上引号。

显式数据类型转换

SQL>select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;    ----将sysdate的格式转换为YYYY-MM-DD HH24:MI:SS

日期格式模板

时间格式模板

数字格式模板

五、嵌套函数

嵌套函数的计算是从最里层到最外层。

六、通用函数

nvl 和 nvl2

SQL>select Nvl(null,'12') from dual;    ---Nvl(C1,C2),C1为空返回C2,否则返回C1.
select Nvl2('a','b','c'), Nvl2(null,'b','c') from dual;   ---Nvl2(c1,c2,c3) c1非空返回c2,c1为空返回c3

 NULLIF

SQL>SELECT NULLIF('A','A'), NULLIF('A','B')FROM DUAL;   ---NULLIF(C1,C2) C1=C2,则返回null,否则返回C1

 COALESCE

SQL>SELECT COALESCE(0.9*list_price, min_price, 5) FROM DUAL;   ---NULLIF(NULL,'5','6',NULL,'9') 返回第一个非空值。

七、条件表达式

case 和 decode

SQL>Select D.Job,
Decode(D.Job,'CLERK','c','SALESMAN','S','O'),
Case When D.Job='CLERK' Then 'C' 
When D.Job='SALESMAN' Then 'S' End As Lie From Scott.Emp D;

DECODE 如果D.Job是CLERK则返回C,如果D.Job是SALESMAN则返回S,否则返回O

CASE 当D.Job是CLERK则返回C,如果D.Job是SALESMAN则返回S,注意后面有END表示结束

扩展内容:

1、如何将一个数字转换为字符串并且按照指定格式显示?

用TO_CHAR 可以用来将DATE 或 NUMBER 数据类型转换成可显示的字符串,格式是TO_CHAR(number_type,format_mask)

 左对齐的就是字符串,右对齐的就是数值类型

2、如何判断一个字符串是否含有中文字汉子?

在7号视频的26分钟处。

3、在oracle中,如何判断一个字符串是否为数字?

在7号视频的26分钟处。

原文地址:https://www.cnblogs.com/miracle2020/p/14067968.html