連續編號的流水號拼接成乙個字串的儲存過程

2021-03-31 08:56:30 字數 1377 閱讀 1815

網友提問:

---------------------------------------

test1表

id start end

1   1     5

2   6     10

3   21    25

4   26    30

5   51    60

希望得到結果:

string:  1-10,21-30,51-60

---------------------------------------

用變數拼接字串的解法:

--建測試表:

create table test1 ( id int,start int,[end] int)

--新增測試資料:

insert test1 select 1,1,5

union select 2,6,10

union select 3,21,25

union select 4,26,30

union select 5,51,60

--建立拼接字串的函式:

create procedure proa

asbegin

declare @s varchar(8000)

--給變數賦表中第一行的相應值, cast(min(start)-1 這裡是為了配合後面的全表查詢中的第一行給正確地接上。注意,如果流水號是從0開始,'-'要相應用其他字元如「+」號替代,最後 select @s 時,再改回『-』號,具體的語句是:select replace(@s,'+','-'):

select @s= + cast(min(start) as varchar(10)) + '-'

+ cast(min(start)-1 as varchar(10))

from test1

--順序查詢並拼接字串:

select @s= left(@s,len(@s)-charindex('-',reverse(@s))+1)

+ case when cast(right(@s,charindex('-',reverse(@s))-1) as int)+1

=start

then cast([end] as varchar(20))

else right(@s,charindex('-',reverse(@s))-1) + ','

+ cast(start as varchar(10)) + '-'

+ cast([end] as varchar(10))

endfrom test1

order by start

--返回結果:

select @s

end--刪除測試表:

drop table test1

MySQL 拼接成乙個字串

1.方法 concat str1,str2,返回結果為連線引數產生的字串。如有任何乙個引數為null 則返回值為 null。注意 此方法在轉換成字串的時候,如果有乙個引數為null 則返回結果為null.2.方法 concat ws 是 concat 的特殊形式,第乙個引數 separator 為分...

替換其中的乙個字元

這是stringbuffer類裡面的乙個方法 主要是用來替換的,方法裡面有兩個引數 setcharat int index,char ch 第乙個引數是取代的位置 索引從0開始 第二個引數是你要替換為的字串 stringbuffer pas new stringbuffer love pas.set...

C C 的乙個字元陷阱

事故現場 於乙個鍊錶的刪除功能,先看 移除節點 stgoodsinfo singlelink remove stgoodsinfo phead,int ipos if ipos 0 stgoodsinfo ptemp phead pnext 遍歷到待刪除節點的前乙個節點 for int i 1 ip...