0

我正在尝试将一些数据从 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

4

3 回答 3

3

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

select right('0000'+convert(varchar(5), ZIP), 5)
于 2013-08-08T17:22:24.700 回答
2

您可以使用 pad 函数在 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
于 2013-08-08T17:16:40.160 回答
2

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

例子:

SELECT * FROM Table1 WHERE CAST(Zip AS int) BETWEEN 10000 AND 20000
于 2013-08-08T17:18:22.070 回答