這一篇文章主要總結開發過程中經常使用到的字串處理函式,它們在處理字串時非常有用,那麼,總結起來有以下函式。
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查詢**:
selectsubstring('
abcde
',1,3);
查詢結果:
注意:1,一般開始位置是從1開始的。
2,如果第二個引數和第三個引數的和超過了整個字串的長度,則函式會返回從起始位置開始,直到字串結尾的整個字串而不會引起錯誤。當需要返回從某個位置開始,直到結尾的所有內容時,可以指定乙個非常大的值或者表示整個字串的長度的值就可以。
left和right函式是substring的簡寫形式,它們分別返回輸入字串從左或右邊開始的指定個數的字元。例如,以下**返回字元'cde'。
sql查詢**:
selectright('
abcde
',3);
查詢結果跟substring一樣。left的使用同right。
len函式返回輸入字串的字元數。而datalength函式返回輸入字串的位元組數。需要注意它們的區別。len的語法形式為:len(string),datalength的語法形式為:datalength(string)
例如,以下**返回字串的字元數5
sql查詢**:
selectlen(n'
abcde
');
查詢結果輸出:5
而如果使用datalength函式則輸出:10。
charindex函式返回字串中某個子串第一次出現的起始位置。它的語法形式為:charindex(substring,string[,start_pos]),該函式在第二個引數(string)中搜尋第乙個引數(substring),並返回其起始位置,可以選擇性地指定第三個引數(start_pos),以便告訴這個函式從字串的什麼位置開始搜尋,如果不指定的話,則從字串的第乙個字串開始搜尋。如果在string中找不到substring,則函式返回0。
例如,以下**在'trac mcgrady'中查詢第乙個空格的位置,結果將返回5
sql查詢**:
selectcharindex('
','trac mcgrady
');
patindex函式返回字串中某個模式第一次出現的起始位置。它的語法形式為:patindex(pattern,string)
例如,我們需要在字串中找到第一次出現數字的位置。
sql查詢**:
selectpatindex('
%[0-9]%
','abcd123efgh
');
查詢結果:5
replace函式將字串中出現的某個子串替換為另乙個字串。它的語法形式為:replace(string,substring1,substring2),該函式會將string中出現的所有substring1替換為substring2。
例如,以下**將輸入字串中的所有連字元(-)替換為冒號(:)
sql查詢**:
selectreplace('
1-a 2-b
','-
',':
');
查詢結果:1:a 2:b
replicate函式以指定的次數複製字串值。它的語法形式為:replicate(string,n)
例如,以下**將字串『abc』複製三次,返回字串'abcabcabc'。
sql查詢**:
selectreplicate('
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查詢**:
selectstuff('
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函式取代。當需要按一定格...