如題所示 在寫儲存過程當中常用到字元的擷取與同事總結了一下帖上來
code
declare
@text
nvarchar(20
),@sign
nvarchar(20
),@content
nvarchar(20
),@startindex
int,
@findindex
int,
@result
nvarchar(30
) --
初始化一些變數
set@text='
14,20,3,4
'set
@sign='
,'set@startindex=1
--t-sql中字串的查詢位置是從開始的
set@findindex=0
set@result=''
--開始迴圈查詢字串逗號
while
(@startindex
<=
len(
@text
))begin
--查詢字串函式charindex 第乙個引數是要找的字串
--第二個引數是在**查詢這個字串
--第三個引數是開始查詢的位置
--返回值是找到字串的位置
select
@findindex
=charindex
(@sign
,@text
,@startindex)--
print @findindex
--判斷有沒找到沒找到返回if(
@findindex=0
or@findindex
isnull
)begin
--如果沒有找到者表示找完了
set@findindex
=len
(@text)+
1end
--擷取字串函式substring 第乙個引數是要擷取的字串
--第二個引數是開始的位置
--第三個引數是擷取的長度
--@findindex-@startindex 表示找的的位置-開始找的位置=要擷取的長度
--ltrim 和rtrim 是去除字串左邊和右邊的空格函式
set@content
=ltrim
(rtrim
(substring
(@text
,@startindex
,@findindex
-@startindex
)))if
(@startindex
=len
(@text
))begin
set@result
=@result
+@content
endelse
begin
set@result
=@result
+@content+'
,'end--
print @content
--初始化下次查詢的位置
set@startindex
=@findindex+1
@result
endselect
@result
sql語句拼接,字元擷取,sql排序
1 下面的語句會把,從t in 1表查詢的vinleft欄位進行去重,同理t vin 3 做同樣的處理,並且把兩個查詢的結果連在一起 select distinct vinleft from t vin 0 union select distinct vinleft from t vin 1 uni...
sql 擷取字串
sql 擷取字串 a.擷取從字串左邊開始n個字元 declare s1 varchar 100 select s1 select left s1,4 顯示結果 http b.擷取從字串右邊開始n個字元 例如取字元www.163.com declare s1 varchar 100 select s1...
SQL擷取字串
substring 返回字元 binary text 或 image 抒發式的一全體。無關可與當函式一伏運用的無效 microsoft sql server 資料種型的更多疑息,請參睹資料種型。語法 substring expression start length 引數 expression 是字...