Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将nvarchar值转换为int数据类型_C#_Sql Server_Sql Server 2008 - Fatal编程技术网

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

C# 如何将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

它有一个错误:

将nvarchar值“I451”转换为数据时,转换失败 输入int


所以。。。看起来您正试图加入
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