Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
如何在SQL中从nchar转换为十进制?_Sql_Sql Server_Tsql - Fatal编程技术网

如何在SQL中从nchar转换为十进制?

如何在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

我有两个表(源和目标),分别是所有劳动力详细信息。在源表(NOR_人工)中有一列“Foots_Producted”,数据类型为“nchar(10)”。在目标表(所有劳动力详细信息)中有一列“生产的劳动力英尺”,数据类型为“decimal(18,4)”。我想将“生产的英尺数”从nchar(10)转换为十进制(18,4),并将其粘贴到“所有劳动力详细信息”表的“生产的英尺数”列中

我发现了一个关于类似问题的代码,但没有完全按照我的要求执行,以下是该代码片段:

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.