SQL字串處理函數

來源:互聯網
上載者:User

     字串函數對位元據、字串和運算式執行不同的運算。此類函數作用於CHAR、VARCHAR、 BINARY、 和VARBINARY 資料類型以及可以隱式轉換為CHAR 或VARCHAR的資料類型。

一、字元轉換函式

    1、ASCII()與CHAR()

ASCII()返回字元運算式 最左端字元的ASCII 碼值。在ASCII()函數中,純數位字串可不用‘’括起來,但含其它字元的字串必須用‘’括起來使用,否則會出錯。CHAR()將ASCII 碼轉換為字元。如果沒有輸入0 ~ 128 之間的ASCII 碼值,CHAR() 返回NULL 。例如:
select ASCII('asd')select CHAR(97)       select CHAR(129)  --char()範圍0-128
輸出結果:
2、Unicode()與NCHAR()與ASCII()、CHAR()功能相似相似,它們成對出現,通俗一點說,用Unicode()把字元轉化成ASCII碼值的時候,相對應的要用NCHAR()把ASCII碼值轉化成字元,同理,用ASCII()把字元轉化成ASCII碼值的時候,相對應的要用CHAR()把ASCII碼值轉化成字元。NCHAR()將ASCII 碼轉換為字元。如果沒有輸入0 ~ 65535 之間的ASCII 碼值,CHAR() 返回NULL 。例如:
select Unicode('asd')select NCHAR(97)select NCHAR(65536)   --char()範圍0-65535
輸出結果:
3、LOWER()和UPPER()LOWER()將字串全部轉為小寫;UPPER()將字串全部轉為大寫。4、STR()把數值型資料轉換為字元型資料。STR (<float_expression>[,length[, <decimal>]])length 指定返回的字串的長度,decimal 指定返回的小數位元。如果沒有指定長度,預設的length 值為10, decimal 預設值為0。當length 或者decimal 為負值時,返回NULL;當length 小於小數點左邊的位元時,返回length 個*;先服從length ,再取decimal ;當返回的字串位元小於length ,左邊補足空格。例如:
select STR(1.11111,2)     --傳回值 1,當返回的字串位元小於length ,左邊補足空格select STR(11.1111,2)     --傳回值*,當length 小於小數點左邊的位元時,返回length 個*select STR(1.11111,-1,2)  --傳回值NULL,當length 或者decimal 為負值時,返回NULL  select STR(1.11111,3,2)   --傳回值1.1,先服從length ,再取decimal
二、去空格函數1、LTRIM() 把字串頭部的空格去掉。2、RTRIM() 把字串尾部的空格去掉。三、取子串函數1、left()LEFT (<character_expression>, <integer_expression>)返回character_expression 左起 integer_expression 個字元。2、RIGHT()RIGHT (<character_expression>, <integer_expression>)返回character_expression 右起 integer_expression 個字元。3、SUBSTRING()SUBSTRING (<expression>, <starting_ position>, length)返回從字串左邊第starting_ position 個字元起length個字元的部分。例如:
select LEFT('abcd',6)     --傳回值為abcdselect LEFT('abcd',2)     --傳回值為abselect RIGHT('abcd',6)    --傳回值為abcdselect RIGHT('abcd',2)    --傳回值為cdselect SUBSTRING('abcd',1,2)  --傳回值為abselect SUBSTRING('abcd',0,2)  --傳回值為aselect SUBSTRING('abcd',0,1)  --傳回值為空白select SUBSTRING('abcd',-1,2) --傳回值為空白select SUBSTRING('abcd',-1,3) --傳回值為a
四、字串比較函數1、CHARINDEX()返回字串中某個指定的子串出現的開始位置。CHARINDEX (<’substring_expression’>, <expression>)其中substring _expression 是所要尋找的字元運算式,expression 可為字串也可為列名運算式。如果沒有發現子串,則返回0 值。此函數不能用於TEXT 和IMAGE 資料類型。2、PATINDEX()返回字串中某個指定的子串出現的開始位置。PATINDEX (<’%substring _expression%’>, <column_ name>)其中子串運算式前後必須有百分比符號“%”否則返回值為0。與CHARINDEX 函數不同的是,PATINDEX函數的子串中可以使用萬用字元,且此函數可用於CHAR、 VARCHAR 和TEXT 資料類型。例如:
select CHARINDEX('ab','abcd')   --傳回值為1select PATINDEX('%ab%','abcd')  --傳回值為1
五、字串操作函數1、QUOTENAME()返回被特定字元括起來的字串。QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 標明括字串所用的字元,預設值為“[]”。2、REPLICATE()返回一個重複character_expression 指定次數的字串。REPLICATE (character_expression integer_expression) 如果integer_expression 值為負值,則返回NULL 。3、REVERSE()將指定的字串的字元排列順序顛倒。REVERSE (<character_expression>) 其中character_expression 可以是字串、常數或一個列的值。4、REPLACE()返回被替換了指定子串的字串。REPLACE (<string_expression1>, <string_expression2>, <string_expression3>) 用string_expression3 替換在string_expression1 中的子串string_expression2。4、SPACE()返回一個有指定長度的空白字串。SPACE (<integer_expression>) 如果integer_expression 值為負值,則返回NULL 。5、STUFF()用另一子串替換字串指定位置、長度的子串。STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)如果起始位置為負或長度值為負,或者起始位置大於character_expression1 的長度,則返回NULL 值。例如:
select QUOTENAME('abcd','{}')   --傳回值為{abcd}select QUOTENAME('abcd')        --傳回值為[abcd]select REPLICATE('abcd',2)      --傳回值為abcdabcdselect REPLICATE('abcd',0)      --傳回值為空白,若為負值,則返回NULLselect REVERSE('abcd')          --傳回值為dcbaselect REPLACE('abcd','ab','e') --傳回值為ecdselect REPLACE(SPACE(2),' ','a')--傳回值為aaselect SPACE(2)                 --傳回值為兩個空格select STUFF('abcd',3,2,'ef')   --傳回值為abefselect STUFF('abcd',5,2,'ef')   --傳回值為NULL,起始位置(5)大於character_expression1(abcd) 的長度,則返回NULL 值select STUFF('abcd',1,5,'ef')   --傳回值為ef


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.