REPLACE()函数可以用来将字符串的指定的子字符串替换为其它的字符串,比如将
“Hello World”中的“rl”替换为“ok”后得到“Hello Wookd”,而把“Just so so”中的“s”
替换为“z”后得到“Juzt zo zo”。REPLACE()函数的参数格式如下:
REPLACE(string,string_tobe_replace,string_to_replace)
其中参数string为要进行替换操作的主字符串,参数string_tobe_replace为要被替换的
字符串,而string_to_replace将替换string_tobe_replace中所有出现的地方。
执行下面的SQL语句:
select FName,REPLACE(FName,'i','e'),FIDNumber,
REPLACE(FIDNumber,'2345','abcd') FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FName REPLACE(FName,'i','e') FIDNumber REPLACE(FIDNumber,'2345','abcd')
Tom Tom 123456789120 1abcd6789120
Jim Jem 123456789121 1abcd6789121
Lily Lely 123456789122 1abcd6789122
Kelly Kelly 123456789123 1abcd6789123
Sam Sam 123456789124 1abcd6789124
Kerry Kerry 123456789125 1abcd6789125
Smith Smeth 123456789126 1abcd6789126
BillGates BellGates 123456789127 1abcd6789127
SQL中没有提供删除字符串中匹配的子字符串的方法,因为使用REPLACE()函数就可
以达到删除子字符串的方法,那就是将第三个参数设定为空字符串,用空字符串来替换匹配
的子字符串也就达到了删除指定子字符串的效果了。比如下面的SQL语句用来将FName中
的m以及FIDNumber中的123删除:
SELECT FName, REPLACE(FName,'m','') ,FIDNumber,
REPLACE(FIDNumber,'123','') FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FName REPLACE(FName,'m','') FIDNumber REPLACE(FIDNumber,'123','')
Tom To 123456789120 456789120
Jim Ji 123456789121 456789121
Lily Lily 123456789122 456789122
Kelly Kelly 123456789123 456789
Sam Sa 123456789124 456789124
Kerry Kerry 123456789125 456789125
Smith Sith 123456789126 456789126
BillGates BillGates 123456789127 456789127
LTRIM()、RTRIM()和TRIM()都只能删除两侧的字符串,无法删除字符串中间的空格,
而使用REPLACE()函数也可以完成这个功能,也就是用空字符串替换中所有的空格。执行
下面的SQL语句:
MYSQL、MSSQLServer:
SELECT REPLACE(' abc 123 wpf',' ','') , REPLACE(' ccw enet wcf f',' ','')
得到字符的ASCII码
ASCII()函数用来得到一个字符的ASCII 码,它有且只有一个参数,这个参数为待求
ASCII码的字符,如果参数为一个字符串则函数返回第一个字符的ASCII码,比如执行下面
的SQL语句:
MYSQL,MSSQLServer:
SELECT ASCII('a') , ASCII('abc')
Oracle:
SELECT ASCII('a') , ASCII('abc') FROM DUAL
DB2:
SELECT ASCII('a') , ASCII('abc') FROM SYSIBM.SYSDUMMY1
执行完毕我们就能在输出结果中看到下面的执行结果:
ASCII('a') ASCII('abc')
97 97
与ASCII()函数正好相反,SQL还提供了用来得到一个字符的ASCII 码的函数。在
MYSQL、MSSQLServer和DB2中,这个函数的名字是CHAR(),而在Oracle 中这个函数的
名字则为CHR()。
执行下面的SQL语句:
MYSQL,MSSQLServer:
SELECT CHAR(56) , CHAR(90) ,'a', CHAR( ASCII('a') )
Oracle:
SELECT CHR(56) , CHR(90) ,'a', CHR( ASCII('a') )
FROM DUAL
DB2:
SELECT CHR(56),CHR(90),'a',CHR( ASCII('a') )
FROM SYSIBM.SYSDUMMY1
PS: DATEADD(DAY, 3,date)为计算日期date 的3 天后的日期,
DATEADD(MONTH ,-8,date)为计算日期date 的8个月之前的日期。 SELECT FBirthDay, DATEADD (YEAR ,3,FBirthDay) as threeyrs,
DATEADD(QUARTER ,20,FBirthDay) as ttqutrs,
DATEADD(MONTH ,68,FBirthDay) as sxtmonths,
DATEADD(WEEK, -1000,FBirthDay) as thweeik
FROM T_Person