У меня есть база данных SQL Server 2000 со столбцом типа VARCHAR (255). Все данные являются либо NULL, либо числовыми данными с точностью до двух точек (например, «11,85»). Я попытался запустить следующий запрос T-SQL, но получил ошибку «Ошибка преобразования типа данных varchar в числовой»
SELECT CAST([MyColumn] AS DECIMAL)
FROM [MyTable];
Я попробовал более конкретное приведение, которое также не удалось.
SELECT CAST([MyColumn] AS DECIMAL(6,2))
FROM [MyTable];
Я также попробовал следующее, чтобы увидеть, не являются ли какие-либо данные не числовыми, и единственными возвращаемыми значениями были NULL.
SELECT ISNUMERIC([MyColumn]), [MyColumn]
FROM [MyTable]
WHERE ISNUMERIC([MyColumn]) = 0;
Я пытался конвертировать в другие типы данных, такие как FLOAT и MONEY, но только MONEY был успешным. Поэтому я попробовал следующее:
SELECT CAST(CAST([MyColumn] AS MONEY) AS DECIMAL)
FROM [MyTable];
... который работал просто отлично. Есть идеи, почему исходный запрос не удался? Будет ли проблема, если я сначала переведу в ДЕНЬГИ, а затем в ДЕСЯТИЧНЫЙ?
Спасибо!