/************************************************/ --字串函數/************************************************/PRINT CHAR(ASCII('A')) --返回hello中第一次出現L的位置--(這裡有個奇怪的現象,只有在AdventureWorks資料庫中,前面的L字元需要區分大小寫,應該是該資料庫設定了什麼地方吧)PRINT CHARINDEX('L','helLo WORLD')-- [AdventureWorks:4, 其他資料庫:3]--貌似這個函數和CHARINDEX區別不大,其實這個更強大PRINT PATINDEX('%L%','hello world') -- [AdventureWorks:4, 其他資料庫:3]--模式wl在運算式中找不到(0), [wl]表示在w,l中任意一個,在hello world中在位置(3)找到l--[^wl]:表示不在wl的任何字元,在(1)處找到hSELECT PATINDEX('%wl%','hello world'),PATINDEX('%[wl]%','hello world'),PATINDEX('%[^wl]%','hello world') --[0,3,1]--DIFFERENCE 該函數實則比較兩個字串的SOUNDEX()值相似性[3]SELECT SOUNDEX('hell'), SOUNDEX('hello'), DIFFERENCE('el','hello')PRINT LEFT('hello world',4) -- 取左邊個字元[hell]PRINT RIGHT('hello world',6) --取右邊個字元, 可以用Len()檢驗[ world]PRINT LEN(RIGHT('hello world',5)) --運算式裡面的字元長度[5]SELECT LEN(RTRIM(LTRIM(' HELLO world '))), LEN(' HELLO world '), LEN(' HELLO world')--切忌LEN函數只計算左邊和字元中間的空格,不計算右邊的空格[11,13,13]PRINT LOWER('HELLO woRLd') --轉為小寫[hello word]PRINT UPPER('HELLO world') --轉為大寫[HELLO WORD]SELECT LEN(' HELLO world'), LEN(LTRIM(' HELLO world')) --去掉左邊空格[14,11]SELECT LEN('HELLO world '),LEN(RTRIM('HELLO world ')),RTRIM(' HELLO world ') --去掉右邊空格[11,11, HELLO world]SELECT LEN(RTRIM(LTRIM(' HELLO world '))),RTRIM(LTRIM(' HELLO world '))-- 去掉左右空格[11,HELLO world]PRINT REVERSE('HELLO world ') --反轉運算式[ dlrow OLLEH]PRINT 'hello'+SPACE(4)+'world' --擷取空格, [hello world]/* char a = STR ( float_expression [ , length [ , decimal ] ] ); length:總長度。它包括小數點、符號、數字以及空格。預設值為10。 decimal:小數點後的位元。decimal 必須小於或等於16。如果decimal 大於16,則會截斷結果,使其保持為小數點後具有十六位。 返回:char類型 注意: length應該不小於float_expression運算式整數部分的位元,否則將顯示length 個* ; length >= LEN(FLOOR(float_expression)) 為了不讓左邊空格補充: length = LEN(FLOOR(float_expression))+1(小數點)+小數位元*/PRINT STR(1223445.3,2) --因為小於整數部分個數(7)位 [**]PRINT STR(1223445.3,5) --因為小於整數部分個數(7)位 [*****]DECLARE @num FLOAT SET @num= 323.14159 --如果不足length,則左邊已空格補充SELECT LEN(STR(@num,10,2)),STR(@num,10,2) [10, 323.14]--LEN(FLOOR(@num))+1+2 : 這裡表示整數位元+小數點+小數個數SELECT STR(@num,LEN(FLOOR(@num))+3,2) ,CAST(STR(@num,10,2) AS FLOAT)--從運算式的位置(空格),取個字元( w),然後用DELETE替換剛才找到的兩個字元PRINT STUFF('hello world',6,2,'DELETE') --[helloDELETEorld]/* SUBSTRING ( value_expression ,start_expression , length_expression ) 0<=start_expression<=LEN(value_expression) 0<=length_expression<=LEN(value_expression) 從value_expression位置start_expression取length_expression個字元*/PRINT SUBSTRING('hello world',2,6) --[ello w]
以上函數也是自己學習的筆記,當然你要合適的用到項目中去,就要看你自己的需求了!
Technorati 標籤: sqlserver,字串函數