Sql server SQL:将数据类型nvarchar转换为浮点作为联合的一部分时出错

Sql server SQL:将数据类型nvarchar转换为浮点作为联合的一部分时出错,sql-server,type-conversion,union,Sql Server,Type Conversion,Union,我正在尝试从2个表创建MPXN的主列表,并将此主列表连接到另一个表 MPXN的长度可以是8-13位(全部为数字) 在offcoms表中,它们存储为浮点数 在DCC表中,它们存储为NavChar(20) 在健康表中,它们存储为NavChar(50) 我将offcoms和DCC故事合并到一个临时表中,然后尝试将该表中的MPXN链接到健康表,但在第21行[select t1.pod]上获取navchar to float错误 我曾尝试在联合体中将offcoms转换为navchar,并尝试将t1.pod

我正在尝试从2个表创建MPXN的主列表,并将此主列表连接到另一个表

MPXN的长度可以是8-13位(全部为数字)

在offcoms表中,它们存储为浮点数 在DCC表中,它们存储为NavChar(20) 在健康表中,它们存储为NavChar(50)

我将offcoms和DCC故事合并到一个临时表中,然后尝试将该表中的MPXN链接到健康表,但在第21行[select t1.pod]上获取navchar to float错误

我曾尝试在联合体中将offcoms转换为navchar,并尝试将t1.pod转换为navchar作为最终选择的一部分,但无法找到解决方案

原始查询

SELECT * into ##temp1 

from
(select [esme_sap_mpxn]
FROM [DOMCustomers].[Bart].[OffComs14_1]
  
  union
  
select [gsme_sap_mpxn]
FROM [DOMCustomers].[Bart].[OffComs14_1]
  
 union
  
select  MPxN
from  [DOMCustomers].[dbo].[DCC_Remote_Commissioning_Main]

Where DATE_BOCT_SENT > = '2020-11-05') as tmp


select t1.pod 
,s2h.Premise
,s2h.[Meter Health Status]

from ##temp1 as t1
left join [DOMCustomers].[Bart].MeterHealth as s2h on t1.pod=s2h.Mpxn
 
drop table ##temp1
在联合期间尝试将float转换为navchar

SELECT * into ##temp1 

from
(select Case when isnumeric ([esme_sap_mpxn]) =1 then cast ([Esme_sap_mpxn] as nvarchar)else 0 end as POD
FROM [DOMCustomers].[Bart].[OffComs14_1]
  
  union
  
select Case when isnumeric ([gsme_sap_mpxn]) =1 then cast ([Gsme_sap_mpxn] as nvarchar)else 0 end as POD
FROM [DOMCustomers].[Bart].[OffComs14_1]
  
 union
  
select  MPxN
from  [DOMCustomers].[dbo].[DCC_Remote_Commissioning_Main]

Where DATE_BOCT_SENT > = '2020-11-05') as tmp


select t1.pod 
,s2h.Premise
,s2h.[Meter Health Status]

from ##temp1 as t1
left join [DOMCustomers].[Bart].MeterHealth as s2h on t1.pod=s2h.Mpxn
 
drop table ##temp1

我不能使用“TRY_CONVERT”,因为它不是可识别的内置函数名。Microsoft SQL Server Management Studio v10.0.6000.29

您可以尝试使用转换功能。除非某个值无法转换,否则您可能会看到try\u convert函数。这样,选择“不可转换”值并对其进行过滤。如果有必要,您可以针对该问题制定不同的解决方案

请尝试以下示例:

select [esme_sap_mpxn], TRY_CONVERT(NVARCHAR, [esme_sap_mpxn]) FROM [DOMCustomers].[Bart].[OffComs14_1]

仅供参考
ISNUMERIC
充其量是一个糟糕的函数,请使用
试试COVNERT
。另外,不声明数据类型的长度、比例或精度是一个非常坏的习惯。TRY\u CONVERT不是公认的内置函数名:(Microsoft SQL Server Management Studio v10.0.6000.29