Проблема в удалении жестко закодированных значений с использованием временной таблицы - PullRequest
0 голосов
/ 01 января 2011

Прежде всего, желаю всем счастливого Нового года. У меня проблема с написанием запроса. При выполнении запроса я получаю сообщение об ошибке.

Запрос:

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] 

ERROR

Сообщение 8114, Уровень 16, Состояние 5, Строка 1

Ошибка преобразования типа данных varchar в вещественный.

Что меня просят, так это то, что мне нужно удалить жестко закодированные значения и написать запросы с временной таблицей.

Заранее спасибо, Shashra

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Ошибка преобразования типа данных 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')

UPDATE

Иногда не так очевидно, какие значения проблемы

Попробуйте следующее, чтобы найти его

SELECT DISTINCT 
        a.[Dell Score]
FROM 
      [HelpService].[dbo].[help] s
      LEFT OUTER JOIN #CE_Temp_Q a on
      s.[R1] = a.[Source]

OR

  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]
1 голос
/ 01 января 2011

Что возвращает следующий запрос?

select a.[Dell Score]
FROM [HelpService].[dbo].[help] s
LEFT OUTER JOIN #CE_Temp_Q a on
s.[R1] = a.[Source] 
WHERE  a.[Dell Score] like '%[^0-9.]%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...