字串處理函數

來源:互聯網
上載者:User

標籤:style   blog   color   使用   os   資料   

  這一篇文章主要總結開發過程中經常使用到的字串處理函數,它們在處理字串時非常有用,那麼,總結起來有以下函數。

1,字串串聯運算子

2,SUBSTRING提取子串

3,LEFT和RIGHT

4,LEN和DATALENGTH

5,CHARINDEX函數

6,PATINDEX函數

7,REPLACE替換

8,REPLICATE複製字串

9,STUFF函數

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;GOSELECT supplierid,    RIGHT(REPLICATE(‘0‘,9)+CAST(supplierid AS VARCHAR(10)),10) AS strsupplieridFROM Production.SuppliersORDER 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 ‘));

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.