我在编写查询时遇到问题。执行查询时出现错误。
询问:
select case when S.R1 = '6' then 5 when S.R1 = '7' then 6 when S.R1 = '8' then 7 when S.R1 = '9' then 8 when S.R1 ='10' then 9 else S.R1 end as Q FROM [HelpService].[dbo].[help] s ----------------------------------------------- SELECT [Source], [Score] INTO #Temp_Q FROM [HelpDesk].[dbo].[Survey] WHERE [data_Source Name] = 'Text Data' ----------------------------------------------- select CONVERT(REAL, a.[Dell Score]) as Q FROM [HelpService].[dbo].[help] s LEFT OUTER JOIN #CE_Temp_Q a on s.[R1] = a.[Source]
错误
消息8114,第16级,状态5,第1行
将数据类型varchar转换为实数时出错。
我需要做的是,我需要删除硬编码值,并需要使用临时表编写查询。
在此先感谢,Shashra
将数据类型varchar转换为实数时出错
这意味着您的值之一包含不是数字的内容。
例如以下工作正常
SELECT convert(Real, '1') UNION SELECT convert(Real, ' ') UNION SELECT convert(Real, NULL) UNION SELECT convert(Real, '123.123') UNION SELECT convert(Real, ' 456 ')
―但是以下任何一种都会产生与您得到的相同的错误
SELECT convert(Real, ' 456 ') SELECT CONVERT(Real, '1 2')
更新
有时候,问题的价值并不那么明显
尝试以下找到它
SELECT DISTINCT a.[Dell Score] FROM [HelpService].[dbo].[help] s LEFT OUTER JOIN #CE_Temp_Q a on s.[R1] = a.[Source]
或者
SELECT DISTINCT a.[Dell Score], DATALENGTH (a.[Dell Score]) FROM [HelpService].[dbo].[help] s LEFT OUTER JOIN #CE_Temp_Q a on s.[R1] = a.[Source]