繁体   English   中英

在SQL Server中连接2个数字

[英]Concatenate 2 numbers in SQL Server

我需要一个函数来连接SQL Server中的2个数字

例如

getuserid(3,333) = 3333
getuserid(8,5) = 8005
getuserid(2,11) = 2011

它应该根据第二个参数的长度返回结果(如第3个例子)

我尝试将其转换为字符串并使用case语句将其连接起来。 但是,我觉得,这可以通过数学方式更有效地完成。 任何人都可以建议一种方式。?

通过by,返回的输出应该是数字类型。

看起来会这样做:

select num1 * 1000 + num2

为什么这个简单的数学需要一个函数?

试试这个 -

CREATE FUNCTION dbo.concat_num (@a INT, @b INT)
RETURNS INT
AS BEGIN

  RETURN CONVERT(INT, CONVERT(VARCHAR(25), @a) + REPLICATE('0', CASE WHEN LEN(@b) > 2 THEN LEN(@b) ELSE 3 END - LEN(@b)) + CONVERT(VARCHAR(25), @b))

END

输出:

-----------
3333
-----------
8005
-----------
2011
-----------
15555

如你的问题所述

.... 它应该根据第二个参数的长度返回结果 .....

这意味着你的意思

getuserid(3,333) = 3333
getuserid(8,5) = 85
getuserid(2,11) = 211

我在第二个参数上使用了LEN() ,在10上使用了Power()函数

CREATE FUNCTION dbo.concat_num (@a INT, @b INT)
RETURNS INT
AS BEGIN

  RETURN  @a * POWER(10,LEN(@b)) + @b

END

我几乎没有修改@Devrat提供的上述解决方案,因为我想只连接值而不是在它们之间添加000,如果第二个数字为0,它将仅返回第一个数字

Create FUNCTION dbo.concat_num (@a INT, @b INT)
RETURNS INT
AS BEGIN
  IF @b = 0 
   BEGIN
 RETURN @a
   END  
  ELSE
   BEGIN
 RETURN CONVERT(INT, CONVERT(VARCHAR(2), @a) + CONVERT(VARCHAR(2), @b))
   END
  RETURN 0

END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM