SqlServer - 连接一个整数

时间:2014-02-28 12:10:39

标签: sql sql-server

我正在寻找任何帮助来连接整数。

示例:

在公司中,员工作为员工编号。 号码是140024。

现在,数字14是年份(取决于日期),需要自动分配。另一个号码0024是我的问题。我可以得到24号,但如果数字小于10,我怎么能加00或000?

所以我需要帮助来连接这一切。并且还希望将其作为INT来使其成为主键。

4 个答案:

答案 0 :(得分:1)

你有两个选择:使用varchar或int本身。

示例:

select cast(14 as char(2)) + right('0000' + cast(24 as varchar(4)),4)

或使用int

select 14 * 10000 + 24

当然10000当然是最大数量。它可能是100,1000或更多。但你的数字位数可能是固定的,所以它也应该固定。

答案 1 :(得分:1)

DECLARE @Your_Number INT = 24;

SELECT CAST(RIGHT(YEAR(GETDATE()), 2) AS NVARCHAR(2)) 
          + RIGHT('000000000' + CAST(@Your_Number AS NVARCHAR), 4)  --<-- This 4

RESULT: 140024

数字4决定年份数字后您想要的总数字数。

答案 2 :(得分:0)

Declare @i int=24

select replicate('0',4-len(cast(@i as varchar(10))))+cast(@i as
varchar(10))

答案 3 :(得分:0)

试试这个..

CREATE FUNCTION [dbo].[fn_GetAutoGeneratedID]     
 (    
  @strPart VARCHAR(20),@strSeprator VARCHAR(5),@intPart VARCHAR(10)    
 )RETURNS VARCHAR(20)    
AS    
 BEGIN    
  DECLARE @prefix VARCHAR(10)    
  SET @prefix=(SELECT CASE LEN(@intPart)     
      WHEN 1 THEN @strSeprator+'0000'+@intPart    
      WHEN 2 THEN @strSeprator+'000'+@intPart    
      WHEN 3 THEN @strSeprator+'00'+@intPart    
      WHEN 4 THEN @strSeprator+'0'+@intPart    
      ELSE @strSeprator+@intPart    
      END)    
  RETURN(SELECT @strPart+@prefix);    
 END  

现在称之为..

SELECT @MyNum=dbo.fn_GetAutoGeneratedID (@yourMonthPart,'',@YourNextpart )