Проблема при преобразовании значения varchar '1.33' в тип данных int - PullRequest
1 голос
/ 29 декабря 2010

У меня есть 5 операторов case (просто показаны только 2 оператора case).

SELECT DISTINCT 
       CASE [GRADE1]
         when 1 then 1
         when 2 then 3
         when 3 then 5
         when 4 then 7
         when 5 then 9
       End as Q1,
       CASE [GRADE2]
         when 1 then 1
         when 2.3 then 3
         when 3.33 then 5
         when 4.67 then 7
         when 1 then 9
       End as Q2
  FROM abcd

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

SELECT a,b     
  INTO #Temp_Q
  FROM xyz 
 WHERE [ds]= 'Data'

   select distinct t.[b] as [Q]
     from abcd s
left join #Temp_Q t on s.[GRADE1]  = t.[a]
                       s.[GRADE2]  = T.[a]

Вместо жесткого кодирования всех этих значений меня просят написать код.

Теперь я получаю ошибку .. И не знаю, как конвертировать. [GRADE2] (FLOAT, NULL) - это тип данных, указанный в столбце.

Сообщение 245, Уровень 16, Состояние 1, Строка 14 Ошибка преобразования при преобразовании значения varchar '1.33' в тип данных int.

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

1,33 - это не целое число , это DECIMAL. После десятичной точки стоит десятичная дробь и числа, поэтому ее нельзя представить в виде целого числа, то есть 1, 2, 3, 4. Перед обработкой этого поля необходимо использовать CAST или CONVERT.

0 голосов
/ 30 декабря 2010

@ JNK правильно.Однако я бы изменил тип данных во временной таблице на десятичный.Основное правило заключается в том, чтобы поддерживать согласованность типов данных на всех этапах обработки.Поскольку "1.01" является десятичным, сохраняйте его и в десятичном виде.

0 голосов
/ 29 декабря 2010

Попробуйте выбрать SELECT CAST (как AS INT) или SELECT CONVERT (INT, a) и дайте мне знать, как это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...