Я пытаюсь преобразовать поле varchar(20) в numeric(10,2) и для этого я использую этот скрипт:
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.
В основном, так же, как @ решение Микаэля Эрикссона , только с большим количеством синтаксического сахара:
SELECT ISNULL(CAST(NULLIF(Age, 'NULL') AS numeric(10, 2)), 0) FROM AgeTable
Если вы используете SQL Server, попробуйте использовать функцию ISNULL() вместо оператора CASE:
ISNULL()
CASE
Select CAST(ISNULL(Age,0) as numeric(10,2)) as Age from AgeTable
Ваш оператор case возвращает int из-за then 0 части.
int
then 0
Попробуйте вместо этого:
select case Age when 'NULL' then cast(0 as numeric(10,2)) else Age end as Age from AgeTable