SQL/TSQL 存储过程和函数 输出组成的最大数

图片说明
具体要求如上图所示,输入4个数字,每个数字在0-9之间,自定义一个GetMax函数,要求输出4个数组成的最大整数,如输入四个数为7,8,3,4,最后输出8743

CREATE FUNCTION GetMax(
@a int,
@b int,
@c int,
@d int
)
RETURNS INT
AS
BEGIN
?????
END

SELECT dbo.GetMax(7,8,3,4)

具体实现代码该如何编写?求教,虽然看起来容易,但对于小白还是有点困难的,请大佬们给予解答

2个回答

CREATE FUNCTION GetMax(@a int,@b int,@c int,@d int)
RETURNS INT
AS

BEGIN
declare @str varchar(4000)
declare @tmp table(n varchar(100))
set @str =''

insert into @tmp
select @a union all 
select @b union all 
select @c union all 
select @d

SELECT @str = @str + n FROM @tmp order by n desc 
RETURN CAST(@str AS INT)

END

--SELECT dbo.GetMax(7,8,3,4)

hu15889920913
心有余悸520 非常感谢!
大约 2 年之前 回复

CREATE FUNCTION GetMax(
@a int,
@b int,
@c int,
@d int
)
RETURNS int
AS
BEGIN
declare @max int
set @max=@a
if @max<@b
set @max=@b
if @max<@c
set @max=@c
if @max<@d
set @max=@d
return @max
END
望采纳

hu15889920913
心有余悸520 回复freedomxa007: 非常感谢!
大约 2 年之前 回复
freedomxa007
freedomxa007 回复hu15889920913: create FUNCTION GetMax(@a int,@b int,@c int,@d int ) RETURNS int AS BEGIN declare @max varchar(10) declare @tb table(num int) insert into @tb select @a union all select @b union all select @c union all select @d select @max=isnull(@max+',','')+convert(varchar(10),num)from @tb order by num desc return convert(int,replace(@max,',','')) END 刚刚没看清,这样就可以了
大约 2 年之前 回复
hu15889920913
心有余悸520 不是输出最大的数,而是输出所组成最大的整数,例如输入四个数为5,8,1,6,他们组成最大的数是8651,所以最后输出8651,要这样
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问