MSSQL和oracle函数的整理比较------字符串函数
1.时间转换成字符:
convert(char(n),date,format(eg:120,114,12))
to_char(date,format(eg:'yyyy-mm-dd'))
2.取部分字符
substring('happy',1,3)=hap
substr('happy',1,3) =hap
3.返回字符所在位置
charindex('p','happy',1)=3 chaindex('ha','happy',1)=1
InStr('happy','p')=3
4.计算字符串的长度
len('开心')=2,datalength('开心')=4
length('happy')=5
5.字符串连接函数
'happy'+'day'=happyday
concate('happy','day')='happyday'
6.将数字转换成字符
cast(1 as varchar(2))
to_char(number,'fmt') fmt:9(数字),0(强制将前面的0也显示出来),$(显示美元符号)L(显示区域钱币代号).(显示10进制位置),(显示千分位的位置)PR(<>代表负数)
7.字符串替代函数
REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )replace('happy','p','v')=havvp,replace('happy','hp','v')=happy
REPLACE('happy','p','v')=havvp,replace('happy','hp','v')=happy
8.字符级别替代函数
MSSQL里未找到,直接用replace
oracle里 translate TRANSLATE ( expr , from_string , to_string )
select TRANSLATE('happy','hp','jk') = jakky (第一个字符h用j替代,第二个字符p用k替代。
select TRANSLATE('happy','hpa','jk') = jkky(若from里的字符个数大于to里的字符则a用空值替换)
select TRANSLATE('happy','php','jkz') = kajjy(若from里的字符多次出现,以第一次出现的为准)
用此可以实现的一个有用的功能是统计一个字符串中某个字符出现的次数: selectlength(translate('happy','p'||'happy','p')) from dual =2
9. 返回字符 ASCII 代码值
select ASCII('abc') =97 (a的ascii值) 返回字符表达式中最左侧的字符的 ASCII 代码值
select ASCII('abc') from dual =97
10.字符大小写转换
select upper('abc') =ABC select LOWER('AbC')='abc'
select upper('abc') from dual =ABC select LOWER('AbC') from dual ='abc'
11.去掉空格函数
用法一样 ltrim(去掉字符串左边的空格) rtrim(去掉字符串右边的空格) 中间的空格可以用replace去掉。或者直接全部空格都用replace去掉
12.返回字符表达式的逆向表达式
用法一样 reverse select reverse('abc') =cba