Как остановить преобразование реального в varchar (50) в SQL Server от усечения значений?

#sql #sql-server

#sql #sql-server

Вопрос:

У меня есть несколько real значений в таблице.

 42.1234323
38.0234042
40.1112311
  

Однако, даже если я укажу varchar(50) так:

 cast(<<value>> as varchar(50))
  

они отбрасывают символы:

 42.12
38.023
40.111
  

Как мне это остановить? Мне нужны все числа…

Спасибо.

Ответ №1:

Используйте str() для преобразования:

 select str(col, 10, 7)
  

Это задокументировано здесь .

Альтернативный метод преобразует в decimal first:

 select convert(varchar(255), convert(decimal(10, 7), col))
  

Комментарии:

1. Никогда не знаете о существовании str

2. @Prdp . . . Это зависит от SQL Server.