使用TRY_CONVERT函数将结果分配给SQL

时间:2017-04-28 09:20:57

标签: sql sql-server tsql sql-server-2012

我们有一个客户端将我们的信息发送到SQL数据库的临时表,问题是发送信息的源系统只能将值作为VARCHAR发送,我试图将其转换为FLOAT执行一个小计算,将其转换回VARCHAR并将信息返回给源系统。

我尝试使用内置的TRY_CONVERT()SQL函数,但看起来你不能将结果集分配给声明的变量。

DECLARE @FloatValue float

SELECT @FloatValue = (TRY_CONVERT(float, '123.456') AS [varchar to float])

我尝试过正常的转换convert(float, [FIELDVALUE]),但我一直收到错误,无法将数据类型varchar转换为float。有什么建议吗?以下是select语句的淡化版本。

CREATE TABLE #Samples
    (
        Id int
        ,Result varchar(255)
        ,Units varchar(50)
    )

INSERT INTO #Samples
SELECT 
    [ID] as [Id]
    ,CASE [UNITS]
        WHEN '%' THEN CONVERT(VARCHAR(50), (CONVERT(FLOAT, [RESULT])/100))
        ELSE [RESULT]
    END AS [Result]
    /**/
    ,[UNITS] as [Units]
FROM C_MES_STAGING 
WHERE [UNITS] = '%'

SELECT * FROM #Samples
DROP TABLE #Samples

1 个答案:

答案 0 :(得分:1)

请尝试以下选项,如果您遇到任何问题,请告知我们。

--Assigning value to a Variable
DECLARE @FloatValue float

SELECT  @FloatValue = TRY_CONVERT(float, '123.456')
SELECT @FloatValue

--Checking if the value ISNUMERIC and then CASTING
SELECT CASE ISNUMERIC('123.456') WHEN 1 THEN CAST('123.456' AS float) ELSE null END