字串處理函式

2021-09-06 17:07:10 字數 3996 閱讀 4425

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

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查詢**:

--

設定資料庫上下文

usetsqlfundamentals2008;

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函式用於從字串中提取子串。例如,以下**返回字串『abc』.

sql查詢**:

select

substring('

abcde

',1,3);

查詢結果:

注意:1,一般開始位置是從1開始的。

2,如果第二個引數和第三個引數的和超過了整個字串的長度,則函式會返回從起始位置開始,直到字串結尾的整個字串而不會引起錯誤。當需要返回從某個位置開始,直到結尾的所有內容時,可以指定乙個非常大的值或者表示整個字串的長度的值就可以。

left和right函式是substring的簡寫形式,它們分別返回輸入字串從左或右邊開始的指定個數的字元。例如,以下**返回字元'cde'。

sql查詢**:

select

right('

abcde

',3);

查詢結果跟substring一樣。left的使用同right。

len函式返回輸入字串的字元數。而datalength函式返回輸入字串的位元組數。需要注意它們的區別。len的語法形式為:len(string),datalength的語法形式為:datalength(string)

例如,以下**返回字串的字元數5

sql查詢**:

select

len(n'

abcde

');

查詢結果輸出:5

而如果使用datalength函式則輸出:10。

charindex函式返回字串中某個子串第一次出現的起始位置。它的語法形式為:charindex(substring,string[,start_pos]),該函式在第二個引數(string)中搜尋第乙個引數(substring),並返回其起始位置,可以選擇性地指定第三個引數(start_pos),以便告訴這個函式從字串的什麼位置開始搜尋,如果不指定的話,則從字串的第乙個字串開始搜尋。如果在string中找不到substring,則函式返回0。

例如,以下**在'trac mcgrady'中查詢第乙個空格的位置,結果將返回5

sql查詢**:

select

charindex('

','trac mcgrady

');

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

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

sql查詢**:

select

patindex('

%[0-9]%

','abcd123efgh

');

查詢結果:5

replace函式將字串中出現的某個子串替換為另乙個字串。它的語法形式為:replace(string,substring1,substring2),該函式會將string中出現的所有substring1替換為substring2。

例如,以下**將輸入字串中的所有連字元(-)替換為冒號(:)

sql查詢**:

select

replace('

1-a 2-b

','-

',':

');

查詢結果:1:a 2:b

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

例如,以下**將字串『abc』複製三次,返回字串'abcabcabc'。

sql查詢**:

select

replicate('

abc',3);

查詢結果:'abcabcabc'

下面這個例子顯示了replicate函式,以及right函式和字串串聯的用法。以下對production.suppliers的查詢為每個**商的整數id生成乙個10位數字的字串表示(不足10位時,前面補『0』)

sql查詢**:

--

設定資料庫上下文

usetsqlfundamentals2008;

goselect

supplierid,

right(replicate('

0',9)+

cast(supplierid as

varchar(10)),10) as

strsupplierid

from

production.suppliers

order

by supplierid

查詢結果:

stuff函式可以先刪除字串中的乙個子串,然後再插入乙個新的子串作為替換。它的語法形式為:stuff(string,pos,delete_length,insertstring)

例如,以下**對字串『xyz』進行處理,先刪除其中的第二個字元,再插入字串'abc'.

sql查詢**:

select

stuff('

xyz',2,1,'

abc');

查詢結果:'xabcz'

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(string),ltrim(string)。如果既想刪除前導空格,也想刪除尾部空格,則可以將乙個函式的結果作為另乙個函式的輸入來使用。例如,以下**會刪除輸入字串的前導空格和尾部空格,最後返回『abc』

sql查詢**:

--

返回'abc'

select

rtrim(ltrim('

abc

'));

字串處理函式

1 puts 向顯示器輸出字串 原型 int puts const char s 標頭檔案 include 返回值 成功返回輸出的字元數,失敗返回eof puts 函式與printf 輸出字串的區別 1.puts在輸出字串時,遇到 0 會自動終止輸出,並將 0 轉換為 n 來輸出 2.printf在...

字串處理函式

puts 函式 用來向標準輸出裝置 螢幕 寫字串並換行,其呼叫格式為 puts s 其中s為字串變數 字串陣列名或字串指標 puts 函式的作用與語printf s n s 相同,將緩衝區的字元輸出到標準輸出,遇到空字元截至,並且在末尾新增乙個換行符。gets 函式用來從標準輸入裝置 鍵盤 讀取字串...

字串處理函式

下面介紹幾個最常用的字串函式。格式 puts 字元陣列名 功能 把字元陣列中的字串輸出到顯示器。即在螢幕上顯示該字串。例7 12 include stdio.h main 從程式中可以看出puts函式中可以使用轉義字元,因此輸出結果成為兩行。puts函式完全可以由printf函式取代。當需要按一定格...