日期:2014-05-18  浏览次数:20672 次

SQL 数据类型问题

create table bb
(
sx# int
)
declare @sx# int
set @sx#='30160001'
while @sx#<'30180001'
begin
insert into bb values (@sx#)
set @sx#=@sx#+1
end

select * from bb

DECLARE @I INT
SET @I=0
UPDATE bb SET SX#='3016'+RIGHT('0000'+CAST(@I AS varchar(4)),4),@I=@I+1 
--更新时提以下信息

服务器: 消息 245,级别 16,状态 1,行 3
将 varchar 值 '3016000*' 转换为数据类型为 int 的列时发生语法错误。


------解决方案--------------------
declare @sx# int
set @sx#='30160001'
定义时@sx#是int类型
赋值时@sx#='30160001',从字面上看是字符型,会被转换,应该是转换的时候超出范围了