Десятичное число не отображается с текущим языковым стандартом в результате запроса - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над базой данных SqlServer 2012 с настройкой итальянского языка, и у меня странное поведение в результатах, которые я получаю в SSMS при запросе десятичного поля

Для другого числового формата (например, money или float) запрос отображает в результате число с итальянским десятичным разделителем (запятая ",")

для десятичного числа, используется международный десятичный разделитель (точка ".")

Вот пример:

select 
    cast(1234.567 as decimal(7, 3)) as decimalValue
    , cast(1234.567 as float) as floatValue
    , cast(1234.567 as money) as MoneyValue

Результат:

decimalValue    floatValue  MoneyValue
1234.567        1234,567    1234,567

На самом деле я запрашиваю десятичное поле таблицы, но приведенный выше результат запроса такой же

Как получить десятичное числозначение отформатировано с итальянским десятичным разделителем в результатах запроса из SSMS?Что мне нужно, это скопировать и вставить результаты в файл Excel (опять же, настройка с итальянским языковым стандартом) и десятичные значения, отформатированные с помощью "."распознаются как текст, а не как число при вставке в Excel

РЕДАКТИРОВАТЬ : только что нашли обходной путь:

select cast(MyDecimalField as float) from MyTable

Это, кажется, делает трюк, но это странночто мне нужно привести из «точного» числового типа к числовому типу с плавающей точкой

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете попробовать использовать функцию FORMAT, которая была представлена ​​в 2012 году.

Некоторые примеры здесь:
https://stackoverflow.com/a/41358670/78522
и
https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017

...