首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将int转换为带有前导零的char?

如何将int转换为带有前导零的char?
EN

Stack Overflow用户
提问于 2010-03-08 01:32:14
回答 13查看 239.9K关注 0票数 109

我需要将int数据字段转换为带有前导零的nvarchar

示例:

%1转换为“001”

867转换为'000867',等等。

谢谢。

这是我4小时后的回复...

我测试了这个T-SQL脚本,对我来说工作得很好!

代码语言:javascript
复制
DECLARE @number1 INT, @number2 INT

SET @number1 = 1

SET @number2 = 867

SELECT RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 ) AS NUMBER_CONVERTED

SELECT RIGHT('000000' + CAST(@number2 AS NCHAR(6)), 6 ) AS NUMBER_CONVERTED

我创建了这个用户函数

T-SQL代码:

代码语言:javascript
复制
CREATE FUNCTION CIntToChar(@intVal BIGINT, @intLen Int) RETURNS nvarchar(20)
AS
BEGIN

    -- BIGINT = 2^63-1 (9,223,372,036,854,775,807) Max size number

    -- @intlen contains the string size to return
    IF @intlen > 20
       SET @intlen = 20

    RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(20),@intVal)))) 
        + CONVERT(nvarchar(20),@intVal)

END

示例:

选择dbo.CIntToChar( 867,6)作为COD_ID

输出

000867

EN

回答 13

Stack Overflow用户

发布于 2012-09-25 12:12:17

试试这个:select right('00000' + cast(Your_Field as varchar(5)), 5)

它将得到5位数的结果,例如: 00001,...,01234

票数 108
EN

Stack Overflow用户

发布于 2010-03-09 00:35:43

使用REPLICATE,这样你就不必硬编码所有的前导零:

代码语言:javascript
复制
DECLARE @InputStr int
       ,@Size     int
SELECT @InputStr=123
      ,@Size=10

PRINT REPLICATE('0',@Size-LEN(RTRIM(CONVERT(varchar(8000),@InputStr)))) + CONVERT(varchar(8000),@InputStr)

输出:

代码语言:javascript
复制
0000000123
票数 24
EN

Stack Overflow用户

发布于 2012-02-01 23:44:22

这个问题不是高调的,但需要注意的是,您需要使用(N)VARCHAR而不是(N)CHAR数据类型。

代码语言:javascript
复制
RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 )

不会从SQL 2005生成正确的响应。

代码语言:javascript
复制
RIGHT('000' + CAST(@number1 AS NVARCHAR(3)), 3 )

将从SQL 2005产生所需的响应。

varchar将为您提供所需的前缀长度。其中,固定长度数据类型将需要指定和调整长度。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2397161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档