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;
Это работает в следующем порядке:
- LTRIM обрезает пустое пространство слева.
- Замените все нули пустыми пробелами.
- RTRIM усекает эти пустые места справа.
- Заменить все пробелы нулями.
- Замените точку пробелом.
- Обрежьте все пространство справа (чтобы избавиться от конечной точки, если существует).
- Замените пробелы точками (чтобы поставить точку в правильном месте, если она существует).
Если вы, ребята, можете придумать лучший способ сделать это, дайте мне знать!
1 ответ
Решение
2013-08-27 11:59