#sql-server #tsql #sql-server-2012
#sql-сервер #tsql #sql-server-2012
Вопрос:
У меня есть столбец с типом данных decimal (18,2)
.
Я использую его в своем представлении, которое импортируется Excel.
Что я пытаюсь сделать, так это преобразовать его в числовое значение, чтобы оно отображалось в Excel как число. Я получаю эту ошибку:
ошибка преобразования типа данных varchar в числовой.
Вот мой код:
cast(replace(isnull([wartosc],''),'.',',') AS numeric(18,2)) AS wartosc
Комментарии:
1. В каких данных
wartosc
? С какой СУБД вы работаете (Sybase или SQL Server)? какая версия?2. Вы не можете привести пустую строку к
numeric
в SQL Server. Удалитеisnull
для полученияnull
возврата из приведения, еслиwartosc
равно null3. Я использую SQL Server 2012, вот пример данных в столбце wartosc: 1035514.61
4. Почему вы заменяете
.
на,
? каков результатSELECT @@LANGUAGE
в вашей системе?5. decimal и numeric являются синонимами в SQL server — Если исходный тип данных на самом деле десятичный, то вам вообще не нужно приводить…
Ответ №1:
если вы не хотите преобразовывать символы в столбце, используйте функцию try_cast в sql server, она автоматически проигнорирует значение null и символы и присвоит им значение null, если это значение не может быть преобразовано, запрос также не завершается ошибкой.
select try_cast(replace(isnull([wartosc],''),'.',',') AS numeric(18,2)) AS wartosc