Как преобразовать varchar в десятичный код, чтобы он отображался как число в Excel

#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 равно null

3. Я использую 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