Ошибка преобразования при преобразовании значения varchar '71 .8 'в тип данных int - PullRequest
4 голосов
/ 30 марта 2012

Я пытаюсь преобразовать поле varchar(20) в numeric(10,2) и для этого я использую этот скрипт:

SELECT CAST(CASE Age WHEN 'NULL' THEN 0 ELSE Age END AS numeric(10,2)) AS Age 
FROM   AgeTable

Но я получаю эту ошибку:

Ошибка преобразования при преобразовании значения varchar '71 .8 'в тип данных int.

Ответы [ 3 ]

4 голосов
/ 30 марта 2012

В основном, так же, как @ решение Микаэля Эрикссона , только с большим количеством синтаксического сахара:

SELECT ISNULL(CAST(NULLIF(Age, 'NULL') AS numeric(10, 2)), 0)
FROM AgeTable
1 голос
/ 30 марта 2012

Если вы используете SQL Server, попробуйте использовать функцию ISNULL() вместо оператора CASE:

Select CAST(ISNULL(Age,0) as numeric(10,2)) as Age 
from AgeTable
1 голос
/ 30 марта 2012

Ваш оператор case возвращает int из-за then 0 части.

Попробуйте вместо этого:

select case Age
         when 'NULL' then cast(0 as numeric(10,2))
         else Age
       end as Age
from AgeTable
...