Oracle字符串函数

1.Oracle instr函数  -截取某字符在父字符串中的索引位置

  INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)
  instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。
  参数说明:
  起始位置->此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引
  匹配序号->代表要查找第几次出现的目标字符串. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
 比如: SELECT instr('abc','d') FROM dual;  -- 返回 0
        select INSTR('pop.kid.orc.txt', '.', -1) from dual; --返回 12
        SELECT instr('pop.kid.orc.txt','.',-1,2) FROM dual;  -- 返回 8
        SELECT instr('syranmo','an',-1,1) FROM dual;  -- 返回 4 (就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母     的位置,所以这里返回4)

  还有一个用法,如下:

  SELECT code, name, dept, occupation  FROM staff  WHERE instr(code, '001') > 0;

  等同于

  SELECT code, name, dept, occupation  FROM staff  WHERE code LIKE '%001%' ;

2.Oracle substr函数 -从父字符串截取指定位置的子字符串

  substr(字符串,截取开始位置,截取长度) //返回截取的字符串

 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串

 substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符

 substr('Hello World',2,4) //返回结果为 'ello'

 substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符

3.Oracle length()函数-不能区分中英文,只能得到字符数而不能得到字节数

  不能对一个使用LONG数据类型的列使用LENGTH之类的函数。

4.Oracle Trunc()函数-用于对值进行截断

格式:TRUNC(n1,n2),n1表示被截断的数字,n2表示要截断到那一位。n2可以是负数,表示截断小数点前,即均以0记。

注意,TRUNC截断不是四舍五入。

/**************日期********************/
1.select trunc(sysdate) from dual  --2014-12-12  今天的日期为2014-12-12
2.select trunc(sysdate, 'mm')   from   dual  --2014-12-1    返回当月第一天.
3.select trunc(sysdate,'yy') from dual  --2014-1-1       返回当年第一天
4.select trunc(sysdate,'dd') from dual  --2014-12-12    返回当前年月日
5.select trunc(sysdate,'yyyy') from dual  --2014-1-1   返回当年第一天
6.select trunc(sysdate,'d') from dual  --2014-12-7(星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual   --2014-12-12 14:00:00   当前时间为14:41   
8.select trunc(sysdate, 'mi') from dual  --2014-12-12 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

5.Oracle ROUND函数-四舍五入

传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。

select round(123.456, 0) from dual;          回传 123 

select round(123.456, 1) from dual;          回传 123.5 

select round(-123.456, 2) from dual;        回传 -123.46

 OtherWise:

  ceil(n) 取大于等于数值n的最小整数;floor(n)取小于等于数值n的最大整数 

6.LOWER(string) 将输入的字符串转换成小写

7.UPPER(string) 将输入的字符串转换成大写

8.INITCAP(string) 将输入的字符串单词的首字母转换成大写。PS:如果不是两个字母连在一起,则认为是新的单词,

  例:a_b a,b  a b  类似前面这些情况,都a和b都会转换成大写

9.concat-连接函数(||)

 将两个字符串用||连接起来,除此之外还可以使用Concat函数来连接字符串。

 例:select CONCAT('City','country') from Table

注意:如果CONCAT中连接的值不是字符串,Oracle会尝试将其转换为字符串,与MySQL的CONCAT()函数不同,Oracle的CONCAT()函数只支持两个参数,不支持两个以上字符串的拼接。

10.LPAD和RPAD,填充函数

    这是两个十分相似的函数,使用方式完全一样。允许在列的左[右]边填充一组字符。例:RPAD(city,20,'.'),如果ciy的值没有小于长度20的话,则用'.'在右边补齐,补到20个,如果是用空格补齐,看上去就是像左对齐一样。

11.LTRIM,RTRIM和TRIM

   他们的作用是从字符串的左边,右边,左右两边删除不需要的字符,默认时删除空格。trim只能去除单个字符,而ltrim和rtrim可 以去除多个字符。

  trim格式略有不同:

  SELECT trim(leading 'd' from 'dfssa') FROM dual; --fssa(前)

  SELECT trim(both '1' from '123sfd111') FROM dual; --23sfd

  SELECT trim(trailing '2' from '213dsq12') FROM dual;--213dsq1(尾)

  rtrimSELECT rtrim('aaaaminb','main') FROM dual;--aaaaminb

  ltrim:SELECT ltrim('ccbcminb','cb') FROM dual;--minb

12.Chr和ascii函数

 在即查询中很少使用。Chr把数值转换成等价的ascii字符串  例:select chr(70) from dual

 ascii函数执行的结果刚好是相反的,传递给他字符串,它将转换成对应的数值(只转换第一个字符串),如果需要同时转换多个字符串可以使用DUMP函数 DUMP(string)

13.REPLACE(string,s1,s2)-替换函数 

 说明:string 希望被替换的字符或变量  s1 被替换的字符串  s2 要替换的字符串

  select replace(he love you,he,i) from dual; --i love you
14.ABS(n)-绝对值函数,返回指定值的绝对值 ;
   MOD(n1,n2) -返回一个n1除以n2的余数;
   ADD_MONTHS(date,int)-增加或减去月份;
   LAST_DAY(sysdate) -返回该月的最后一天;
   MONTHS_BETWEEN(date2,date1)-给出date2-date1的之间月份数;
   NEXT_DAY(date,day)-给出日期date和星期x之后计算下一个星期的日期;
日期转换函数:

TO_DATE:将字符串按照定制格式转换为日期类型

         for example:TO_DATE('2002-01-01','YYYY-MM-DD')
TO_CHAR:将其它类型(日期,数值)的数据转换为字符类型,主要应用在日期类型上。

         for example:TO_CHAR(hiredate,'YYYY"年"MM"月"DD"日"')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值