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
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函数
instr( string1, string2 [, start_position [, nth_appearance ] ] )
位置索引号从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