T-SQL在表中插入前导零的数字

时间:2013-11-02 20:19:15

标签: sql-server database tsql

我需要在表格中插入一个0000128号,但它会将此号码视为128,我还尝试将类型从int更改为varchar,但是没有区别。

有可能这样做吗?

3 个答案:

答案 0 :(得分:3)

存储为varchar应该可以正常工作。

DECLARE @T TABLE (
  V VARCHAR(10));

INSERT INTO @T
VALUES      ('0000128');

SELECT *
FROM   @T 

您必须沿途投射到数字并丢失前导零。

答案 1 :(得分:0)

没有带前导零的数字,只有带有前导零的数字的文本表示。

答案 2 :(得分:0)

我在做ETL之前遇到过这个问题。这就是我解决它的方法。

-- declare and assign
-- this could be from anywhere
declare @int_NUMBER int = 128

-- show the original
select @int_NUMBER

-- steps:
-- first: cast the number as a varchar

-- second: create a string of zeros. The number of zeros should be equal to the max size of this "number". 
-- In this example, the max size this "number" is 7 places.

-- third: concat the leading zeros in front of the varchar of the number

-- forth: take the number of max places from the right
-- this way you will always get the proper amount of leading zeros

select right('0000000' + cast(@int_NUMBER as varchar(10)),7)

结果:


128

(1行受影响)


0000128

(1行受影响)