Oracle 下常用函数的用法

//将字段最后两个字符去掉

select substr(t.modality,1,length(t.modality)-2),t.psi from order_list t where t.pl='LSS' or t.pl='PCS'

//在字段后面添加后缀字符

update product_type t  set t.code=CONCAT(t.code,'-1'),t.name=CONCAT(t.name,'-1') where t.pcode='LSS'

 

substr用法

Oracle中的截取字符串函数。

  语法如下:

  substr( string, start_position, [ length ] )

  参数分析:

  string

  字符串值

  start_position(0和1都是表示截取的开始位置为第一个字符

  截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。

  length

  截取位数,Number型

  其中,length为可选,如果length为空(即不填)则返回start_position后面的所有字符。

  意思就是:

  从start_position开始,取出length个字符并返回取出的字符串。

  具体参考示例。

  示例:

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

  substr('SyranMo have a dream', -5, 5)  返回 'dream' 

 

CONCAT用法:

 

      CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。

      请注意,Oracle的C O NCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。

      不过,在Oracle中,我们可以用'||'来一次串连多个字串。 

      SELECT CONCAT(region_name,store_name) FROM Geography 
      WHERE store_name = 'Boston'; 
      --'EastBoston'

 

       SELECT region_name || ' ' || store_name FROM Geography 
       WHERE store_name = 'Boston'; 
      --'East Boston'

 

 LTRIM用法

 

  LTRIM删除起始空格后返回字符表达式。

  语法
  LTRIM ( character_expression )

  参数
  character_expression

  是字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 

  必 须是可以隐性转换为 varchar 的数据类型。否则,使用 CAST 显式转换 character_expression。

  返回类型
  varchar

 

 RTRIM用法

 

  RTRIM截断所有尾随空格后返回一个字符串。

  语法
  RTRIM ( character_expression )

  参数
  character_expression

  由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列

   返回类型
   varchar

   注释
   character_expression 必须为可隐性转换为 varchar 的数据类型。否则请使用 CAST 函数显式转换   

    character_expression。

 

TO_NUMBER用法

 

将一个字符串转为数字类型

 

 

 

trunc  的用法

语法:

trunc ( date, [ format ] )

 

例子:

 

  --Oracle trunc()函数的用法
/**************日期********************/
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

replace 用法


REPLACE('2012/09/08','/','-')==>2012-09-08

TRANSLATE 用法

TRANSLATE ( 'char' , 'from_string' , 'to_string' )

TRANSLATE返回将from_string中的每个字符替换为to_string中的相应字符以后的string。

TRANSLATE是REPLACE所提供的功能的一个超集。如果from_string比to_string长,那么在from_string中而不在to_string中的额外字符将从char中被删除,因为它们没有相应的替换字符。to_string不能为空。Oracle将空字符串解释为NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL。(TRANSLATE (’please go away’, ‘a’, NULL) ==> NULL)

举个例子 

select translate('123abc','2dc','4e') from dual;

因为from_string和to_string的位置是一一对应的,2对应4,d对应e,c没有对应的值,所以c应该会被删除。

所以例子的字符里的2会替换为4,

d因为字符串里没有,所以不作替换,

c由于没有对应的替换字符,所以字符串里的c会被删除

那么可以得出,结果是

143ab

INITCAP()

  假设c1为一字符串.函数INITCAP()是将每个单词的第一个字母大写,其它字母变为小写返回.

  单词由空格,控制字符,标点符号等非字母符号限制.

  例:select INITCAP('vEni,vedi,viCI') Ceasar from dual

  结果为 Ceasar

   Veni,Vedi,Vici

rpad函数

rpad函数从右边对字符串使用指定的字符进行填充   
rpad(string,padded_length,[pad_string])   
string 表示:被填充的字符串   
padded_length 表示:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符;   
pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。   
例如:   
rpad('tech', 7); 将返回'tech '   
rpad('tech', 2); 将返回'te'   
rpad('tech', 8, '0'); 将返回'tech0000'   
rpad('tech on the net', 15, 'z'); 将返回 'tech on the net'   
rpad('tech on the net', 16, 'z'); 将返回 'tech on the netz'

SQL> select rpad('aa',5)||decode('bbb',null,' ',rpad('bbb',8))||rpad('cccc',12) from dual;
 
RPAD('AA',5)||DECODE('BBB',NUL
------------------------------
aa   bbb     cccc

 

 

instr函数

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。
语法如下: 
  instr( string1, string2 [, start_position [, nth_appearance ] ] ) 
 
string1
源字符串,要在此字符串中查找。
string2
要在string1中查找的字符串 。
start_position
代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance
代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

 

注意: 
  位置索引号从1开始。
  如果String2在String1中没有找到,instr函数返回0。
  示例: 
  SELECT instr('syranmo','s') FROM dual; -- 返回 1 
  SELECT instr('syranmo','ra') FROM dual; -- 返回 3 
  SELECT instr('syran mo','a',1,2) FROM dual; -- 返回
0
posted @ 2012-08-28 14:47  十年半山  阅读(442)  评论(0编辑  收藏  举报