使用sql server的同一表上的select的Update sql语句未提供正确的数据
所以早些时候我有一个问题,关于在字段前面添加0,当它是4位数而不是5位数时 对我来说,关键是要用select语句更新到表中,更新到另一列中 我希望我写的代码能起作用,但它最终只是插入了相同的数据 fullzip需要新的邮政编码使用sql server的同一表上的select的Update sql语句未提供正确的数据,sql,sql-server,Sql,Sql Server,所以早些时候我有一个问题,关于在字段前面添加0,当它是4位数而不是5位数时 对我来说,关键是要用select语句更新到表中,更新到另一列中 我希望我写的代码能起作用,但它最终只是插入了相同的数据 fullzip需要新的邮政编码 SELECT TOP 1000 [ZIP], right( '00000'+convert( varchar(5),ZIP) , 5) as fullzip ,[ZIP_Name] FROM [CC].[dbo].[ServiceableZipCodes]
SELECT TOP 1000 [ZIP],
right( '00000'+convert( varchar(5),ZIP) , 5) as fullzip
,[ZIP_Name]
FROM [CC].[dbo].[ServiceableZipCodes]
选择结果
Zip fullZip ZIP_Name
2030 02030 Dover
但是,我创建的update语句如下所示,它没有添加零:/
UPDATE t1
SET t1.ZipCode = right( '00000'+convert( varchar(5),t2.ZIP) , 5)
FROM ServiceableZipCodes t1 INNER JOIN ServiceableZipCodes t2 on
t1.Zip = t2.zip
WHERE t1.ZIP_Name = t2.ZIP_NAME
现在,我从更新中插入的新列ZipCode
,只有4个字符
DataTypes
ZipCode int
ZIP float
看起来是这样的
ZipCode Zip ZIP_Name
2030 2030 Dover
我做错了什么?创建一个新列作为varchar(10)(以防您有承运人路线)
Integer datatype should not allow zero in first place
as well as float datatype
for example :
DECLARE @Rate FLOAT
SET @Rate=0125
SELECT @Rate
Output :
125
您正试图插入到包含整数的列中。。。不去上班
你想要一个瓦查尔
以身作则
ZipCodeFull varchar(10)
请注意下面的更新语句sql和新列ZipCodeFull
UPDATE t1
SET t1.ZipCodeFull = right( '00000'+convert( varchar(5),t2.ZIP) , 5)
FROM ServiceableZipCodes t1 INNER JOIN ServiceableZipCodes t2 on
t1.Zip = t2.zip
WHERE t1.ZIP_Name = t2.ZIP_NAME
您现在应该得到正确的结果创建一个新列作为varchar(10)(如果您有carrier route) 您正试图插入到包含整数的列中。。。不去上班 你想要一个瓦查尔 以身作则
ZipCodeFull varchar(10)
请注意下面的更新语句sql和新列ZipCodeFull
UPDATE t1
SET t1.ZipCodeFull = right( '00000'+convert( varchar(5),t2.ZIP) , 5)
FROM ServiceableZipCodes t1 INNER JOIN ServiceableZipCodes t2 on
t1.Zip = t2.zip
WHERE t1.ZIP_Name = t2.ZIP_NAME
您现在应该得到正确的结果如果表中的
ZipCode
列的类型为int
,则它将删除所有前导零。我想这里就是这样
SQLSERVER不会将“02030”视为一个数字。对于ZipCode
列,最好使用varchar
类型
希望这有帮助 如果表中的
ZipCode
列的类型为int
,则它将删除所有前导零。我想这里就是这样
SQLSERVER不会将“02030”视为一个数字。对于ZipCode
列,最好使用varchar
类型
希望这有帮助 为什么要在更新中进行自加入?您能给我们看一下您表中的示例数据吗?我只想同时用正确的邮政编码进行更新,如果它是4个数字,那么我想在frontAn
int
列中添加零,它将永远不会“存储”前导零。如果您想要一个数字字符串,该字符串可以在任何位置包含任意数字,并且您不打算对其执行任何数学运算,请使用varchar
。为什么要在更新中进行自联接?您能给我们看一下您表中的示例数据吗?我只想同时用正确的邮政编码进行更新,如果它是4个数字,那么我想在frontAnint
列中添加零,它将永远不会“存储”前导零。如果您想要一个可以在任何位置包含任意数字且不打算对其执行任何数学运算的数字字符串,请使用varchar
。这将是一个很好的注释,但回答很差。请编辑它以添加一些内容。@zohar peled当然你是对的,但公平地说:它确实回答了唯一的问题:)这将是一个很好的评论,但回答很差。请编辑它以添加一些内容。@zohar peled当然你是对的,但公平地说:它确实回答了唯一的问题:)