22,209
社区成员
发帖
与我相关
我的任务
分享
if object_id('tb')>0
drop table tb
create table tb
(
num numeric(10,2)
)
insert into tb
select 3.2
union all
select 2.3
union all
select 1.3
union all
select 5.5
union all
select 6.6
union all
select 7.8
GO
CREATE FUNCTION dbo.f_str()
RETURNS VARCHAR(1000)
AS
BEGIN
declare @s varchar(1000)
SET @s=''
select @s =@s+ cast(num as varchar(20)) +',' from tb order by num
RETURN left(@s,len(@s)-1)
END
GO
--调用
SELECT dbo.f_str()
if object_id('tb')>0
drop table tb
create table tb
(
num numeric(10,2)
)
insert into tb
select 3.2
union all
select 2.3
union all
select 1.3
union all
select 5.5
union all
select 6.6
union all
select 7.8
declare @s varchar(max)
set @s =''
select @s =@s+ cast(num as varchar(20)) +',' from tb
order by num
print left(@s,len(@s)-1 )
结果
1.30,2.30,3.20,5.50,6.60,7.80
if object_id('tb')>0
drop table tb
create table tb
(
num varchar(100)
)
insert into tb
select '3.2,2.3,1.3,5.5,6.6,7.8' UNION ALL
SELECT '0.1,3.2,2.3,1.3,5.5,6.6,7.8'
GO
CREATE FUNCTION dbo.f_str(@str VARCHAR(100))
RETURNS VARCHAR(1000)
AS
BEGIN
declare @s varchar(1000)
select @s =num from tb WHERE num=@str
DECLARE @t table(col VARCHAR(100))
WHILE CHARINDEX(',',@s)>0
BEGIN
INSERT INTO @t SELECT LEFT(@s,CHARINDEX(',',@s)-1)
SET @s=STUFF(@s,1,CHARINDEX(',',@s),'')
END
insert into @t SELECT @s
SET @s=''
select @s =@s+cast(col as varchar(20)) +',' from @t order by col
RETURN LEFT(@s,LEN(@s)-1)
END
GO
--调用
SELECT dbo.f_str(num) FROM tb
--result
--1.3,2.3,3.2,5.5,6.6,7.8
--0.1,1.3,2.3,3.2,5.5,6.6,7.8
if object_id('tb')>0
drop table tb
create table tb
(
num varchar(100)
)
insert into tb
select '3.2,2.3,1.3,5.5,6.6,7.8'
CREATE FUNCTION dbo.f_str()
RETURNS VARCHAR(1000)
AS
BEGIN
declare @s varchar(1000)
select @s =num from tb
DECLARE @t table(col VARCHAR(100))
WHILE CHARINDEX(',',@s)>0
BEGIN
INSERT INTO @t SELECT LEFT(@s,CHARINDEX(',',@s)-1)
SET @s=STUFF(@s,1,CHARINDEX(',',@s),'')
END
insert into @t SELECT @s
SET @s=''
select @s =@s+cast(col as varchar(20)) +',' from @t order by col
RETURN left(@s,len(@s)-1)
END
GO
--调用
SELECT dbo.f_str()
--result
--1.3,2.3,3.2,5.5,6.6,7.8