字符串處理函數

  這一篇文章主要總結開發過程當中常常使用到的字符串處理函數,它們在處理字符串時很是有用,那麼,總結起來有如下函數。數據庫

1,字符串串聯運算符函數

2,SUBSTRING提取子串spa

3,LEFT和RIGHTcode

4,LEN和DATALENGTHblog

5,CHARINDEX函數開發

6,PATINDEX函數字符串

7,REPLACE替換字符串處理

8,REPLICATE複製字符串string

9,STUFF函數io

10,UPPER和LOWER函數

11,RTRIM和LTRIM函數

字符串串聯運算符

因爲業務須要,有的時候咱們須要將兩個字段(列)組合起來,中間加上分隔符,而後輸出。這時咱們就會用到字符串串聯運算符[+]號。例如,咱們對Employees表中的firstname,空格和lastname列串聯起來,生成完整的姓名fullname列。

SQL查詢代碼:

-- 設置數據庫上下文
USE TSQLFundamentals2008;
GO

-- fullname是串聯運算符串聯後的結果
SELECT empid,firstname,lastname,firstname+N' '+lastname AS fullname 
FROM hr.Employees

查詢結果:

須要注意的是,ANSI SQL規定對NULL值執行串聯運算後也會產生NULL值的結果,這是SQL Server的默認行爲。固然,能夠經過將名爲CONCAT_NULL_YIELDS_NULL的會話選項設置爲OFF來改變SQL Server的默認處理方式,可是要記得,在處理完成後要設置回原來的ON狀態。

SUBSTRING提取子串

SUBSTRING函數用於從字符串中提取子串。例如,如下代碼返回字符串‘abc’.

SQL查詢代碼:

SELECT SUBSTRING('abcde',1,3);

查詢結果:

注意:1,通常開始位置是從1開始的。

   2,若是第二個參數和第三個參數的和超過了整個字符串的長度,則函數會返回從起始位置開始,直到字符串結尾的整個字符串而不會引發錯誤。當須要返回從某個位置開始,直到結尾的全部內容時,能夠指定一個很是大的值或者表示整個字符串的長度的值就能夠。

LEFT和RIGHT

LEFT和RIGHT函數是SUBSTRING的簡寫形式,它們分別返回輸入字符串從左或右邊開始的指定個數的字符。例如,如下代碼返回字符'cde'。

SQL查詢代碼:

SELECT RIGHT('abcde',3);

查詢結果跟SUBSTRING同樣。LEFT的使用同RIGHT。

LEN和DATALENGTH

LEN函數返回輸入字符串的字符數。而DATALENGTH函數返回輸入字符串的字節數。須要注意它們的區別。LEN的語法形式爲:LEN(string),DATALENGTH的語法形式爲:DATALENGTH(string)

例如,如下代碼返回字符串的字符數5

SQL查詢代碼:

SELECT LEN(N'abcde');

查詢結果輸出:5

而若是使用DATALENGTH函數則輸出:10。

CHARINDEX函數

CHARINDEX函數返回字符串中某個子串第一次出現的起始位置。它的語法形式爲:CHARINDEX(substring,string[,start_pos]),該函數在第二個參數(string)中搜索第一個參數(substring),並返回其起始位置,能夠選擇性地指定第三個參數(start_pos),以便告訴這個函數從字符串的什麼位置開始搜索,若是不指定的話,則從字符串的第一個字符串開始搜索。若是在string中找不到substring,則函數返回0。

例如,如下代碼在'trac mcgrady'中查找第一個空格的位置,結果將返回5

SQL查詢代碼:

SELECT CHARINDEX(' ','trac mcgrady');

PATINDEX函數

PATINDEX函數返回字符串中某個模式第一次出現的起始位置。它的語法形式爲:PATINDEX(pattern,string)

例如,咱們須要在字符串中找到第一次出現數字的位置。

SQL查詢代碼:

SELECT PATINDEX('%[0-9]%','abcd123efgh');

查詢結果:5

REPLACE替換

REPLACE函數將字符串中出現的某個子串替換爲另外一個字符串。它的語法形式爲:REPLACE(string,substring1,substring2),該函數會將string中出現的全部substring1替換爲substring2。

例如,如下代碼將輸入字符串中的全部連字符(-)替換爲冒號(:)

SQL查詢代碼:

SELECT REPLACE('1-a 2-b','-',':');

查詢結果:1:a 2:b

REPLICATE複製字符串

REPLICATE函數以指定的次數複製字符串值。它的語法形式爲:REPLICATE(string,n)

例如,如下代碼將字符串‘abc’複製三次,返回字符串'abcabcabc'。

SQL查詢代碼:

SELECT REPLICATE('abc',3);

查詢結果:'abcabcabc'

下面這個例子顯示了REPLICATE函數,以及RIGHT函數和字符串串聯的用法。如下對Production.Suppliers的查詢爲每一個供應商的整數ID生成一個10位數字的字符串表示(不足10位時,前面補‘0’)

SQL查詢代碼:

-- 設置數據庫上下文
USE TSQLFundamentals2008;
GO

SELECT supplierid,
    RIGHT(REPLICATE('0',9)+CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid
FROM Production.Suppliers
ORDER BY supplierid

查詢結果:

STUFF函數

STUFF函數能夠先刪除字符串中的一個子串,而後再插入一個新的子串做爲替換。它的語法形式爲:STUFF(string,pos,delete_length,insertstring)

例如,如下代碼對字符串‘xyz’進行處理,先刪除其中的第二個字符,再插入字符串'abc'.

SQL查詢代碼:

SELECT STUFF('xyz',2,1,'abc');

查詢結果:'xabcz'

UPPER和LOWER函數

UPPER和LOWER函數用於將輸入字符串中的全部字符都轉換爲大寫或小寫形式。它們的語法形式爲:UPPER(string),LOWER(string)。

例如,第一個函數返回'TRAC MCGRADY',第二個函數返回'trac mcgrady'。

-- 返回'TRAC MCGRADY'
SELECT UPPER('trac mcgrady');

-- 返回‘trac mcgrady’
SELECT LOWER('Trac Mcgrady');

RTRIM和LTRIM函數

RTRIM和LTRIM函數用於刪除輸入字符串的尾部空格和前導空格。它們的語法形式爲:RTRIM(string),LTRIM(string)。若是既想刪除前導空格,也想刪除尾部空格,則能夠將一個函數的結果做爲另外一個函數的輸入來使用。例如,如下代碼會刪除輸入字符串的前導空格和尾部空格,最後返回‘abc’

SQL查詢代碼:

-- 返回'abc'
SELECT RTRIM(LTRIM(' abc '));
相關文章
相關標籤/搜索