substr() 函数:
substr(string,start,length)
参数 必须 参数说明
string 必须 指定的要截取的字符串
start 必须 规定在字符串的何处开始:正数 - 在字符串的指定位置开始;负数 - 在从字符串结尾的指定位置开始;0 - 在字符串中的第一个字符处开始
length 可选 指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符
例如:
select substr(‘abcdefg’,3,4) from dual;结果是cdef
instr()函数:
instr(sourceString,destString,start,appearPosition)
instr(‘源字符串’ , ‘目标字符串’ ,‘开始位置’,‘第几次出现’)
其中:
- sourceString代表源字符串;
- destString代表要从源字符串中查找的子串;
- start代表查找的开始位置,这个参数可选的,默认为1;
- appearPosition代表想从源字符中查找出第几次出现的destString,这个参数也是可选的, 默认为1
如果start的值为负数,则代表从右往左进行查找,但是位置数据仍然从左向右计算。
返回值为:查找到的字符串的位置。
对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。
例如:
SQL> select instr(‘abcdefgh’,‘de’) position from dual;
结果:4
trim( )函数:
trim([leading/trailing/both][匹配字符串或数值][from][需要被处理的字符串或数值])
这里如果指明了leading表示从删除头部匹配的字符串,如果指明了trailing表示从删除尾部匹配的字符串,如果指明了both,或者不指明任何位置,则两端都将被删除
如果不指明任何匹配字符串或数值则认为是空格,即删除前面或者后面的空格。
trim函数返回的类型是varchar2
例如:
select trim(0 from 7500) from dual; 结果是:75
select trim(’ my friend ') from dual; my friend
decode()函数:
主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);
使用方法:
Select decode(columnname,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)From talbename Where …
其中columnname为要选择的table中所定义的column,
·含义解释:
decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)的理解如下:
例如:
decode(substr(trim(a.t
e
r
p
c
o
d
e
)
,
13
,
2
)
,
′
−
1
′
,
′
80
0
′
,
′
′
)
去
除
a
.
t
erpcode),13,2),'-1','800','') 去除a.t
erpcode),13,2),′−1′,′800′,′′)去除a.terpcode首尾空格后,从第13位起取两位,如果这两位字符串为-1 则替换为800,其余默认为空。
row_number() over(partition by)函数:
row_number() over(partition by 列名1 order by 列名2 desc)
解析:
表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.
例如:–分析函数(查看重复)
SELECT *
FROM (SELECT USER_NAME,
SCHOOL,
DEPART,
ROW_NUMBER() OVER(PARTITION BY USER_NAME,SCHOOL,DEPART, ORDER BY USER_NAME DESC) RN
FROM USER_M)
WHERE RN > 1;
instr()函数的格式 (俗称:字符查找函数)
格式一:instr( string1, string2 ) // instr(源字符串, 目标字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。
注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。
例:
select instr(‘helloworld’,‘l’) from dual; --返回结果:3 默认第一次出现“l”的位置