我们有一个客户端将我们的信息发送到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
答案 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