各位大神,sql中一個欄位中字符為(3,1,2,7,8),字符型別為varchar,怎樣寫sql陳述句可以讓字符排序顯示呢(1,2,3,7,8)?
uj5u.com熱心網友回復:
create table #t(x varchar(100))
insert into #t(x) select '3,1,2,7,8'
create function dbo.resort(@x varchar(100))
returns varchar(100)
as
begin
declare @y varchar(100);
with t as(
select val=o.value('.','int')
from (select S=convert(xml,'<r><n>'+replace(@x,',','</n><n>')+'</n></r>')) t
cross apply S.nodes('/r/n') x(o))
select @y=isnull(@y+',','')+rtrim(val)
from t
order by val
return @y
end
update t
set t.x=dbo.resort(x)
from #t t
select * from #t
/*
x
--------------------------
1,2,3,7,8
(1 行受影響)
*/
uj5u.com熱心網友回復:
大神,我按照您的寫法,發現資料排序后存在重復的情況啊,這個是咋情況呢
uj5u.com熱心網友回復:
alter function dbo.resort(@x varchar(8000))
returns varchar(8000)
as
begin
declare @y varchar(8000);
with t as(
select val=o.value('.','int')
from (select S=convert(xml,'<r><n>'+replace(@x,',','</n><n>')+'</n></r>')) t
cross apply S.nodes('/r/n') x(o))
select @y=isnull(@y+',','')+rtrim(val)
from t
order by val
return @y
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/24394.html
標籤:基礎類
