我需要将int数据字段转换为带有前导零的nvarchar
示例:
%1转换为“001”
867转换为'000867',等等。
谢谢。
这是我4小时后的回复...
我测试了这个T-SQL脚本,对我来说工作得很好!
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代码:
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
发布于 2012-09-25 12:12:17
试试这个:select right('00000' + cast(Your_Field as varchar(5)), 5)
它将得到5位数的结果,例如: 00001,...,01234
发布于 2010-03-09 00:35:43
使用REPLICATE
,这样你就不必硬编码所有的前导零:
DECLARE @InputStr int
,@Size int
SELECT @InputStr=123
,@Size=10
PRINT REPLICATE('0',@Size-LEN(RTRIM(CONVERT(varchar(8000),@InputStr)))) + CONVERT(varchar(8000),@InputStr)
输出:
0000000123
发布于 2012-02-01 23:44:22
这个问题不是高调的,但需要注意的是,您需要使用(N)VARCHAR而不是(N)CHAR数据类型。
RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 )
不会从SQL 2005生成正确的响应。
RIGHT('000' + CAST(@number1 AS NVARCHAR(3)), 3 )
将从SQL 2005产生所需的响应。
varchar将为您提供所需的前缀长度。其中,固定长度数据类型将需要指定和调整长度。
https://stackoverflow.com/questions/2397161
复制相似问题