SQL字串操作彙總

鴨脖發表於2013-05-21

--將字串中從某個字元開始擷取一段字元,然後將另外一個字串插入此處
select stuff('hello,world!',4,4,'****')   --返回值hel****orld!

--返回從指定位置開始指定長度的字串
select substring('Hello,World!',2,10)   --返回值ello,World

--將字串中某段字元替換為指定的字串
select replace('hello,world!','ll','aa') --返回值heaao,world!

--去除字串中左邊的空格
select ltrim('   hello,world!')    --返回值hello,world!

--去除字串中左邊的空格
select ltrim('hello,world!   ')    --返回值hello,world!

--去除字串中左邊和右邊的空格
select ltrim('    hello,world!   ')   --返回值hello,world!

--將NULL值替換為指定字元
select isnull('a',null)     --返回值a

--轉換資料型別
select cast('2007-10-11' as datetime)   --返回值2007-10-11 00:00:00.000
select convert(datetime,'2007-10-11')   --返回值2007-10-11 00:00:00.000

--獲取字串長度
select len('hello,world!')    --返回值12

--獲取字串的前3個字元
select left('hello,world!',3)    --返回值hel

--獲取字串的後3個字元
select right('hello,world!',3)    --返回值ld!

--去除字串的前3個字元
select right('hello,world!',(len('hello,world!')-3)) --返回值lo,world!

--去除字串的後3個字元
select left('hello,world!',(len('hello,world!')-3)) --返回值hello,wor

--獲取在該字串中某字串的位置(返回數字) 
select charindex('e','hello,world!')   --返回值2

--返回從第2個字元開始前4個字元
select left(right('[哈哈哈哈]aaa',len('[哈哈哈哈]aaa')-1),4) --返回值哈哈哈哈

--返回字元的小寫形式
select lower('HELLO,WORLD!')    --返回值hello,world!

--返回字元的大寫形式
select UPPER('hello,world!')    --返回值HELLO,WORLD!

--用第三個表示式替換第一個字串表示式中出現的所有第二個指定字串表示式的匹配項
(如果其中有一個輸入引數屬於 nvarchar 資料型別,則返回 nvarchar;否則返回 varchar。如果任何一個引數為 NULL,則返回 NULL。)
SELECT REPLACE('Hello,World!','l','a')   --返回值Heaao,Worad!
SELECT REPLACE('Hello,World!','l','')   --返回值Heo,Word!
SELECT REPLACE('Hello,World!','l',null)   --返回值NULL

--以右邊引數數值次數複製字元表示式
select REPLICATE('Hello,World!',4)   --返回值Hello,World!Hello,World!Hello,World!Hello,World!

--返回反轉後的字串
select REVERSE('Hello,World!')    --返回值!dlroW,olleH

--使用DIFFERENCE時,兩個字串發音越相似(僅限於英文字元),返回值越大(返回值在0-4之間)
DIFFERENCE('sun','san')    --返回值4
DIFFERENCE('sun','safdsdf')   --返回值3
DIFFERENCE('sun','dgffgfdg')   --返回值0

--將帶小數點的數字型別轉換為可設定長度可設定小數位的四捨五入後的字串
SELECT STR(123.34584, 7, 3)   --返回值123.346
--當設定長度值小於整數部位長度時,字串將返回設定長度個*
SELECT STR(123333.34584, 5, 4)   --返回值*****

--===================================================================================

--=====================================數字操作彙總==================================

--返回指定數字的最大整數
select floor(123456.1234)   --返回值123456

--返回不帶小數部分並且不小於其引數的值的最小數字。如果引數是一個空序列,則返回空序列
select ceiling(123.010)    --返回124
select ceiling(null)    --返回NULL

--返回四捨五入後的最接近該數值的數值
select round(126.018,2)    --返回126.12

--返回一個0-1之間的FLoat型別的隨機數
select rand()     --返回0.94170703697981

--返回圓周率PI的值
SELECT PI()     --返回3.14159265358979


文章出處:DIY部落(http://www.diybl.com/course/7_databases/database_other/20090213/155355.html)


在MYSQL中字串連線使用的是concat內建函式。可以寫為:select * from myDB where name =concat('a','bc')
在SQL Server中字串連線用+號。可以寫為:select * from myDB where name ='a'+'bc' 
在Oracle中字串連線用的是||號。

相關文章