C# 如何将nvarchar值转换为int数据类型
它有一个错误: 将nvarchar值“I451”转换为数据时,转换失败 输入intC# 如何将nvarchar值转换为int数据类型,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,它有一个错误: 将nvarchar值“I451”转换为数据时,转换失败 输入int 所以。。。看起来您正试图加入Product.ItemID(int)=FQ.name(varchar) 你为什么认为那会起作用 示例数据可能有助于人们了解您正在尝试做什么以及应该如何完成它。如果您仍然希望在这两列上进行连接,并且希望它在无效int时不匹配,则可以采用另一种方法。将Product.ItemID强制转换为varchar: WITH FirstQuery AS ( select i.id, o.[na
所以。。。看起来您正试图加入
Product.ItemID(int)=FQ.name(varchar)
你为什么认为那会起作用
示例数据可能有助于人们了解您正在尝试做什么以及应该如何完成它。如果您仍然希望在这两列上进行连接,并且希望它在无效int时不匹配,则可以采用另一种方法。将Product.ItemID强制转换为varchar:
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;
如何在代码中解决此错误?也许我可以转换这个值?你不能将非数值放在int字段中,更不用说比较它们了。如果你有一些数据完整性问题,你需要先清理。应该强制转换(Product.ItemID为nvarchar(20))=),我现在无法测试,但我相信你不需要(20)。
inner join [Product] on cast(Product.ItemID as varchar) = FQ.name