如何将nvarchar值转换为数据类型int

时间:2011-12-22 16:21:26

标签: c# sql-server sql-server-2008

WITH FirstQuery AS (
  select i.id, o.[name]  from Item i
  LEFT OUTER JOIN sys.objects o on o.[name]='I' + cast(i.id as nvarchar(20))
  where o.name is not null
)
select PriceListItem.ProductExternalId,
       FQ.Id,   [PriceListItem].[ProductExternalDesc]
from FirstQuery FQ
     inner join [Product] on Product.ItemId = FQ.name
                         and Product.InstanceId = FQ.ID
     inner join [PriceListItem]  on Product.ID = PriceListItem.ProductId;

它有一个错误:

  

将nvarchar值'I451'转换为数据时转换失败   输入int。

2 个答案:

答案 0 :(得分:2)

所以......看起来你正试图加入Product.ItemID (int) = FQ.name (varchar)

为什么你认为这会起作用?

示例数据可以帮助人们弄清楚您要做什么以及如何完成它。

答案 1 :(得分:0)

如果您仍然希望加入这两列并希望它在无效的int时不匹配,那么可以反过来这样做。将Product.ItemID转换为varchar:

inner join [Product] on cast(Product.ItemID as varchar) = FQ.name