Oracle之sql函数之一

来源:互联网 发布:mac无法拷贝文件到u盘 编辑:程序博客网 时间:2024/06/06 20:24

一、 单行函数之字符函数

大小写控制函数:LOWER,UPPER,INITCAP。

LOWER('SQL Course')----------结果:sql course;

UPPER('SQL Course')-----------结果:SQL COURSE;

INITCAP('SQL Course')----------结果:Sql Course;


select * from tab_name where LOWER(NAME) = 'jack';------这样可以确保无论数据库中存放的是Jack还是JACK都可以查找到该数据。


字符控制函数:CONCAT,SUBSTR,LENGTH,INSTR,LPAD,RPAD,TRIM,REPLACE。

CONCAT:连接两个字符串(只能连接两个字符串,如果要连接多个,则可以用连接符||来连接)

CONCAT('HELLO','WORLD')-----------输出HELLOWORLD;

SUBSTR:SUBSTR(字符串,截取开始位置,截取长度)---默认是从左边开始,如果length没有填写,则截取到字符串的末尾。

SELECT substr('This is a test', 6, 2) FROM DUAL-------------返回 is;

SELECT substr('This is a test', 6) FROM DUAL-----------------返回is a test;

SELECT substr('This is a test', -9,2) FROM DUAL--------------返回is;----从右边往左边数第九位,然后往右边截取2位。

SELECT substr('This is a test', -9) FROM DUAL----------返回is a test;

LENGTH:LENGTH(字符串)---返回字符长度

SELECT LENGTH('world') FROM DUAL----返回5;

SELECT LENGTH('你好') FROM DUAL------返回2;

PS:这里要注意另外一个函数LENGTHB(字符串),它返回的是字节长度

SELECT LENGTHB('world') FROM DUAL----返回5;

SELECT LENGTHB('你好') FROM DUAL------返回4

INSTR:INSTR(源字符串, 要查找的字符串, 从第几个字符开始--默认是第一个, 要找到第几个匹配的序号--默认是第一个)返回找到的位置,如果找不到则返回0.

SELECT instr('helloworld','o') FROM DUAL----返回5;

SELECT instr('helloworld','o',1) FROM DUAL---返回5;

SELECT instr('helloworld','o',6) FROM DUAL---返回7;

SELECT instr('helloworld','o',1,2) FROM DUAL---返回7;---从第一个字符开始查找o,返回第二个o的位置。

LPAD/RPAD:LPAD(字符串,截取长度,添加的字符串--默认为空格)从左边开始,RPAD从右边开始;在字符串长度够长的情况下,RPAD和LPAD的效果是一样的。不够长的情况下,LPAD是从左边开始补齐,RPAD是从右边开始补齐。

select lpad('test',10) from dual;---返回"test"

select lpad('test',10,'*') from dual;---返回"******test"

select lpad('helloworld',5) from dual---返回hello;

TRIM:1. trim()删除字符串两边的空格。
2. ltrim()删除字符串左边的空格。
3. rtrim()删除字符串右边的空格。
4. trim('字符1' from '字符串2')  分别从字符2串的两边开始,删除指定的字符1。
5. trim([leading | trailing | both] trim_char from string) 从字符串String中删除指定的字符trim_char。
      leading:从字符串的头开始删除。
      trailing:从字符串的尾部开始删除。
    borth:从字符串的两边删除。
    6. tim()只能删除半角空格。
trim('   tech   ')  would return 'tech';
trim(' '  from  '   tech   ')         would return 'tech';
trim(leading '0' from '000123')      would return '123';
trim(trailing '1' from 'Tech1') would return 'Tech';
trim(both '1' from '123Tech111')    would return '23Tech';

二 单行函数之数字函数

ROUND: 四舍五入
ROUND(45.926, 2)-------------45.93
TRUNC: 截断
TRUNC(45.926, 2)-------------45.92
MOD: 求余
MOD(1600, 300) ---------------100


1 round函数可以用来对数据进行四舍五入,用法如下:

ROUND( number, decimal_places ),

number : 需四舍五入处理的数值 

decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )返回值类型数字例子:
select round(123.456, 0) from dual; 回传 123 
select round(126.456, -1) from dual;回传130
select round(123.456, 2) from dual; 回传 123.46 
select round(123.456, 3) from dual; 回传 123.456 
select round(-123.456, 2) from dual; 回传 -123.46

   --Oracle trunc()函数的用法
/**************日期********************/

TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
1.select trunc(sysdate) from dual  --2011-3-18  今天的日期为2011-3-18
2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回当月第一天.
3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回当年第一天
4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回当前年月日
5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回当年第一天
6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   当前时间为14:41   
8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   TRUNC()函数没有秒的精确
/***************数字********************/

TRUNC(number,num_digits) 
Number 需要截尾取整的数字。 
Num_digits 用于指定取整精度的数字。可选项,忽略它则截去所有的小数部分,Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入


9.select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual  --123.458
15.select trunc(123) from dual  --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120




0 0
原创粉丝点击