如何在SQL中从nchar转换为十进制?
我有两个表(源和目标),分别是或和所有劳动力详细信息。在源表(NOR_人工)中有一列“Foots_Producted”,数据类型为“nchar(10)”。在目标表(所有劳动力详细信息)中有一列“生产的劳动力英尺”,数据类型为“decimal(18,4)”。我想将“生产的英尺数”从nchar(10)转换为十进制(18,4),并将其粘贴到“所有劳动力详细信息”表的“生产的英尺数”列中 我发现了一个关于类似问题的代码,但没有完全按照我的要求执行,以下是该代码片段:如何在SQL中从nchar转换为十进制?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两个表(源和目标),分别是或和所有劳动力详细信息。在源表(NOR_人工)中有一列“Foots_Producted”,数据类型为“nchar(10)”。在目标表(所有劳动力详细信息)中有一列“生产的劳动力英尺”,数据类型为“decimal(18,4)”。我想将“生产的英尺数”从nchar(10)转换为十进制(18,4),并将其粘贴到“所有劳动力详细信息”表的“生产的英尺数”列中 我发现了一个关于类似问题的代码,但没有完全按照我的要求执行,以下是该代码片段: Select feet_produc
Select feet_produced AS feet_produced_s, CASE WHEN Isnumeric(feet_produced) = 1
THEN CONVERT(DECIMAL(18,2),feet_produced)
ELSE 0 END AS feet_produced
INTO [MES_DEV].[dbo].[ALL_LABOR_DETAILS]
from [dbo].[NOR_LABOR]
谢谢大家! 我不确定代码的问题是什么,它不适合您 但我会在你刚刚发布的声明中做一点小改动
插入[MES\u DEV].[dbo].[ALL\u LABOR\u DETAILS](人工制作的脚)
选择CONVERT(十进制(18,4),Foet_Producted)作为从[dbo]生成的Foet_.[NOR_LABOR]
对于为数字的存在测试为真的值,但无法转换为十进制
相反,请使用TRY\u CONVERT
,它将返回成功转换为十进制的值,或者在失败时返回NULL
。(然后可以将合并为零以获得所需的结果)
下面是一组简短的值示例,使用TRY\u CONVERT
:
SELECT
TryConvert = COALESCE(TRY_CONVERT(decimal(18,4),TestValues),0)
FROM (
VALUES('10.6'),
('ten'),
('7d2'),
('10000000000'),
('10.00000001')
) AS x(TestValues);
使用示例代码的同一组值将引发错误:
SELECT
IsNumericCase = CASE
WHEN Isnumeric(TestValues) = 1
THEN CONVERT(DECIMAL(18,2),TestValues)
ELSE 0
END
FROM (
VALUES('10.6'),
('ten'),
('7d2'),
('10000000000'),
('10.00000001')
) AS x(TestValues);
返回此错误是因为7d2为空
请提供样本数据和预期结果。“粘贴”不是关系数据库中的操作。
Msg 8114, Level 16, State 5, Line 14
Error converting data type varchar to numeric.