Sql server 2008 将nvarchar转换为int

Sql server 2008 将nvarchar转换为int,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我有谷歌在线这个问题,对于我的生活无法弄清楚为什么这不断抛出错误,任何帮助是感激的 转换nvarchar值“SELECT@orderid”时转换失败 =t.orderid FROM SELECT*,按id划分的行数按creationdatetime描述的行数 [intranet].[dbo].手册\u附录\u数据,其中id=”到数据类型int 您需要将@id和@published int转换为varchar convert(varchar(50),@published) 即 更好的解决方案

我有谷歌在线这个问题,对于我的生活无法弄清楚为什么这不断抛出错误,任何帮助是感激的

转换nvarchar值“SELECT@orderid”时转换失败 =t.orderid FROM SELECT*,按id划分的行数按creationdatetime描述的行数 [intranet].[dbo].手册\u附录\u数据,其中id=”到数据类型int

您需要将@id和@published int转换为varchar

 convert(varchar(50),@published) 

更好的解决方案是避免字符串连接,并使用sp_executesql传递@id和@published参数,就像您已经在使用@orderid一样,或者根本不考虑动态SQL的要求?

您需要将@id和@published int转换为varchar

 convert(varchar(50),@published) 


更好的解决方案是避免字符串连接,并使用sp_executesql传递@id和@published参数,就像您已经在使用@orderid一样,或者根本不考虑动态SQL的要求?

您需要将整数变量转换为字符类型:

 ....
 WHERE id =' + cast(@id as varchar(32)) + ' AND published = ' + cast(@published as varchar(32)) + ') AS t ...

您需要将整数变量强制转换为字符类型:

 ....
 WHERE id =' + cast(@id as varchar(32)) + ' AND published = ' + cast(@published as varchar(32)) + ') AS t ...
其中t.published='+@published+'和t.row=1'

@published是一个int。SQL Server已确定+必须介于两个int之间,并正在尝试将字符串转换为int

要停止此操作,请强制@published改为字符串-然后添加两个字符串串联:

其中t.published='+CONVERTvarchar10、@published+'和t.row=1'

其中t.published='+@published+'和t.row=1'

@published是一个int。SQL Server已确定+必须介于两个int之间,并正在尝试将字符串转换为int

要停止此操作,请强制@published改为字符串-然后添加两个字符串串联:


其中t.published='+CONVERTvarchar10、@published+'和t.row=1'

我使用了动态,这样我就可以有多个具有相同结构的表来分离数据,这只是一个内部系统,没有什么大问题。我使用动态,这样我就可以有多个具有相同结构的表来分离数据,这只是一个内部系统,没什么大不了的。