SQL Float для Varchar

На самом деле это (не очень элегантное) решение проблемы, которую я пытался вернуть с плавающей точкой в ​​столбец varchar, когда выполнял объединение из dummy_table с некоторыми поддельными итогами данных.

Чтобы получить число с плавающей точкой, я использовал следующую функцию в SQL Server 2008 (которую я нашел в SO):

str(sum(<float_column>),25,5)

Это оставляло много ведущих пробелов и конечных нулей, что было нежелательно. Я использовал следующие строки, чтобы проверить форматирование с помощью фиктивной таблицы (обратите внимание, что есть 24 предшествующих пробела, которые не отображаются):

  • ' 8.50000'
  • 0.50000
  • ' 8,00000'

Я использовал следующие функции, чтобы получить желаемый формат:

select replace(rtrim(replace(replace(rtrim(replace(ltrim(
'            8.0000'),'0',' ')),' ','0'),'.',' ')),' ','.') from dummy_table;

Это работает в следующем порядке:

  1. LTRIM обрезает пустое пространство слева.
  2. Замените все нули пустыми пробелами.
  3. RTRIM усекает эти пустые места справа.
  4. Заменить все пробелы нулями.
  5. Замените точку пробелом.
  6. Обрежьте все пространство справа (чтобы избавиться от конечной точки, если существует).
  7. Замените пробелы точками (чтобы поставить точку в правильном месте, если она существует).

Если вы, ребята, можете придумать лучший способ сделать это, дайте мне знать!

1 ответ

Решение

Раунд должен работать для этого.

выберите раунд (8.5000000000,5)

http://sqlfiddle.com/

Другие вопросы по тегам