Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server форматира десетичните знаци със запетаи

За щастие (?), в SQL Server 2012+ , вече можете да използвате FORMAT() за да постигнете това:

FORMAT(@s,'#,0.0000') 

В предишни версии, с риск да изглеждате наистина грозни

[Запитване] :

декларирайте @s decimal(18,10);set @s =1234.1234567;изберете replace(convert(varchar,cast(floor(@s) as money),1),'.00', '. '+right(cast(@s * 10000 +10000.5 as int),4)) 

В първата част използваме MONEY->VARCHAR, за да създадем запетаите, но FLOOR() се използва, за да гарантира, че десетичните знаци отиват към .00 . Това е лесно разпознаваемо и заменено с 4-те цифри след десетичната запетая, като се използва комбинация от изместване (*10000 ) и CAST като INT (отрязване), за да извлечете цифрите.

[Резултати] :

<предварителен код>| КОЛОНА_0 |--------------| 1,234.1235 |

Но освен ако не трябва да доставяте бизнес отчети с помощта на SQL Server Management Studio или SQLCMD, това НИКОГА не е правилното решение, дори и да може да се направи. Всяка предна среда или среда за отчитане има подходящи функции за обработка на форматирането на дисплея.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обосновка за редовно обслужване на SQL сървър

  2. Как да създадете изглед в SQL Server

  3. Как работи APPROX_COUNT_DISTINCT() в SQL Server

  4. Надстроих ODBC драйвера на SQL Server и производителността беше отрицателно засегната. Какво мога да направя?

  5. Защо SQL Server игнорира стойностите в конкатенацията на низове, когато е зададена клауза ORDER BY