Sql Union导致将varchar转换为数字时出错
我在重新发布我昨天的问题,添加了代码。 我正在创建一个新的表LAB_RESULT,作为两个表(Labs和CTE)的并集。名为Sql Union导致将varchar转换为数字时出错,sql,sql-server,Sql,Sql Server,我在重新发布我昨天的问题,添加了代码。 我正在创建一个新的表LAB_RESULT,作为两个表(Labs和CTE)的并集。名为result\u num(numeric(18,5))的列导致LAB\u result出现问题 首先使用显式数据类型声明表LAB_结果 CREATE TABLE dbo.LAB_RESULT ( [LAB_RESULT_CM_ID] VARCHAR (36), [RESULT_NUM] NUMERIC (18,5) ) INSERT INTO [dbo].
result\u num
(numeric(18,5)
)的列导致LAB\u result
出现问题
首先使用显式数据类型声明表LAB_结果
CREATE TABLE dbo.LAB_RESULT
(
[LAB_RESULT_CM_ID] VARCHAR (36),
[RESULT_NUM] NUMERIC (18,5)
)
INSERT INTO [dbo].[LAB_RESULT] (LAB_RESULT_CM_ID, RESULT_NUM)
SELECT LAB_RESULT_CM_ID, RESULT_NUM
FROM [etl].[lab_result]
LAB\u结果
来自表LABS
和CTE
中的varchar
列。我在A和B中都使用了try\u cast
,以确保没有任何东西漏掉
因此,当我从(实验室U CTE)中选择时,我得到:
味精8114将数据类型varchar转换为数字时出错 但是当我仅从
实验室
或仅从CTE
中选择(所有这些都刚刚注释掉)时,数据加载良好
即使我使用cast(null为数字)
,也会发生这种情况
有什么好处?我真的很想了解一些情况。蒂亚 您可能在导致问题的表或其他列上有一个触发器。其次,如果没有底层数据,则无法按照标题所示进行测试。根据标题,如果不是引发触发器,那么解决方案很简单。
SELECT LAB_RESULT_CM_ID, RESULT_NUM
FROM
((SELECT
NEWID() AS LAB_RESULT_CM_ID,
CAST(NULL AS NUMERIC(18, 5)) AS RESULT_NUM
FROM [dbo].[Labs] as labs
UNION
(SELECT
NEWID() as LAB_RESULT_CM_ID,
CAST(NULL as NUMERIC(18, 5)) AS RESULT_NUM
FROM CTE)