SQL字串處理函式

2021-09-06 21:54:19 字數 4429 閱讀 1056

字串函式對二進位制資料、字串和表示式執行不同的運算。此類函式作用於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 ([,length[, ]])

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 個字元。

2、right()

right (, )

返回character_expression 右起 integer_expression 個字元。

3、substring()

substring (, , length)

返回從字串左邊第starting_ position 個字元起length個字元的部分。比如:

select left('abcd',6)     --返回值為abcd

select left('abcd',2) --返回值為ab

select right('abcd',6) --返回值為abcd

select right('abcd',2) --返回值為cd

select substring('abcd',1,2) --返回值為ab

select substring('abcd',0,2) --返回值為a

select substring('abcd',0,1) --返回值為空

select substring('abcd',-1,2) --返回值為空

select substring('abcd',-1,3) --返回值為a

四、字串比較函式

1、charindex()

返回字串中某個指定的子串出現的開始位置。

charindex (, )

當中substring _expression 是所要查詢的字元表示式,expression 可為字串也可為列名表示式。假設沒有發現子串,則返回0 值。

此函式不能用於text 和image 資料型別。

2、patindex()

返回字串中某個指定的子串出現的開始位置。

patindex (, )當中子串表示式前後必須有百分號「%」否則返回值為0。

與charindex 函式不同的是,patindex函式的子串中能夠使用萬用字元,且此函式可用於char、 varchar 和text 資料型別。

比如:

select charindex('ab','abcd')   --返回值為1

select patindex('%ab%','abcd') --返回值為1

五、字串操作函式

1、quotename()

返回被特定字元括起來的字串。

quotename ([, quote_ character]) 當中quote_ character 標明括字串所用的字元,預設值為「」。

2、replicate()

返回乙個反覆character_expression 指定次數的字串。

replicate (character_expression integer_expression) 假設integer_expression 值為負值,則返回null 。

3、reverse()

將指定的字串的字元排列順序顛倒。

reverse () 當中character_expression 能夠是字串、常數或乙個列的值。

4、replace()

返回被替換了指定子串的字串。

replace (, , ) 用string_expression3 替換在string_expression1 中的子串string_expression2。

4、space()

返回乙個有指定長度的空白字串。

space () 假設integer_expression 值為負值,則返回null 。

5、stuff()

用還有一子串替換字串指定位置、長度的子串。

stuff (, , ,)

假設起始位置為負或長度值為負,或者起始位置大於character_expression1 的長度,則返回null 值。比如:

select quotename('abcd','{}')   --返回值為

select quotename('abcd') --返回值為[abcd]

select replicate('abcd',2) --返回值為abcdabcd

select replicate('abcd',0) --返回值為空,若為負值,則返回null

select reverse('abcd') --返回值為dcba

select replace('abcd','ab','e') --返回值為ecd

select replace(space(2),' ','a')--返回值為aa

select space(2) --返回值為兩個空格

select stuff('abcd',3,2,'ef') --返回值為abef

select stuff('abcd',5,2,'ef') --返回值為null,起始位置(5)大於character_expression1(abcd) 的長度,則返回null 值

select stuff('abcd',1,5,'ef') --返回值為ef

sql字串處理函式

sql字串函式 2007年05月15日 星期二 09 05 sql字串函式 字串函式對二進位制資料 字串和表示式執行不同的運算。此類函式作用於char varchar binary 和varbinary 資料型別以及可以隱式轉換為char 或varchar的資料型別。可以在select 語句的sel...

SQL 字串處理函式

將字串中從某個字元開始擷取一段字元,然後將另外乙個字串插入此處 select stuff hello,world 4,4,返回值hel orld 返回從指定位置開始指定長度的字串 select substring hello,world 2,10 返回值ello,world 將字串中某段字元替換為指...

sql字串處理函式

1 upper 函式 upper characer expression characer expression 是由字元資料組成的表示式,可將表示式中部分全部轉成大寫字母 如 select upper hello output hello 2 initcap 函式 initcap expressi...