T-SQL: форматирование "числовое" для форматирования, аналогичного стилю c # {0: #. 00 ####} - PullRequest
0 голосов
/ 31 марта 2009

Существует ли простой способ форматирования SQL Server числовой (18,6) тип данных для форматирования, аналогичный c # {0: #. 00 ####} , но в T-SQL?

например.

  1. 12,550000 должен производить 12,55.
  2. 14,456700 должен дать 14,4567.
  3. 15.00 должен производить 15.00.

Ответы [ 4 ]

3 голосов
/ 31 марта 2009

Честно говоря, этот тип форматирования лучше всего делать в приложении, а не в SQL. SQl для доступа к данным и для воздействия на содержимое данных, он не очень хорош при любом форматировании.

1 голос
/ 30 ноября 2009

Немного другой случай без трейлинга .00:

CAST(CAST(@val AS REAL) AS VARCHAR)
  1. 12.550000 будет производить 12,55.
  2. 14,456700 будет производить 14,4567.
  3. 15.00 будет производить 15.
0 голосов
/ 31 марта 2009

Как говорит HLGEM, лучше всего делать такие вещи на внешнем интерфейсе, но для пиков следующий код, похоже, работает. Хотя, возможно, есть лучший способ сделать это.

REPLACE(
     RTRIM(
          REPLACE(
               CAST(@test AS VARCHAR), '0', ' '
          )
     ), ' ', '0'
) +
CASE
     WHEN @test = FLOOR(@test) THEN '00'
     WHEN FLOOR(@test*10) = @test * 10 THEN '0'
     ELSE ''
END
0 голосов
/ 31 марта 2009

Есть функции CONVERT () и CAST ()

SELECT CAST(@val AS numeric(18,6))

SELECT CAST(@val AS decimal(18,6))

Я не встречал нативную строку формата T-SQL, но, начиная с 2005 года, я уверен, что вы могли бы реализовать что-то с CLR UDF, написанным на языке .NET по вашему выбору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...