我们可以创建一个可以在操作时插入前导零的表

时间:2013-08-08 17:10:07

标签: sql sql-server-2008 tsql

我正在尝试将excel表中的一些数据插入到SQL Server 2008 R2中。 我可以创建一个表,如果长度小于5

,插入数据时可以插入前导0
   FirstName   Lastname  State  Country  Zip

     XY           z         VA   USA     22031
     AB            Y        MO   USA       423
     Anna         Belle     WA    USA     5234

输出:

   FirstName   Lastname  State  Country  Zip

     XY           z         VA   USA     22031
     AB            Y        MO   USA     00423
     Anna         Belle     WA    USA    05234

注意:ZIP应该仍然像INT一样

3 个答案:

答案 0 :(得分:3)

将ZIP保留为int格式,并在选择时添加前导零。像这样:

select right('0000'+convert(varchar(5), ZIP), 5)

答案 1 :(得分:2)

您可以使用像

这样的打击垫功能在一个varchar字段中填充Zip
INSERT INTO TableName (FirstName, Lastname, State, Country, Zip)
VALUES ('AB', 'Y', 'MO'. 'USA', REPLACE(STR(423, 5), SPACE(1), '0') )

或者如果要将字段保留为INT

,请选择格式化
SELECT FirstName, Lastname, State, Country, REPLACE(STR(zip, 5), SPACE(1), '0') as ZIP

答案 2 :(得分:2)

如果列定义为int,则不能有前导零。但是,您可以格式化zip以在查询中添加前导零。如果您将zip存储为varchar,则可以添加前导零并将zip转换为查询中的整数以用于比较目的,如果(1)这是您所追求的和(2)您没有使用的邮政编码有一个连字符。

示例:

SELECT * FROM Table1 WHERE CAST(Zip AS int) BETWEEN 10000 AND 20000
相关问题