Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zaokrąglanie wartości w kolumnie varchar w MS SQL Server 2012?

Przykład wybierz, aby sprawdzić proponowane wartości:

select 
      case when ISNULL([Call Length], '') = '' 
      then '' 
      else 
 FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####')   
      end as    val123
    from Clinical.AAAJFJunk

Zaktualizuj oświadczenie ..

Obejmuje obsługę wartości null (tj. pozostawia je nietknięte)

Obejmuje obsługę wartości naukowych z notacją E w wartościach ciągu źródłowego. np. 6.6699999999999995E-2

Obejmuje usunięcie końcowego zera po prawej stronie numeru

Używana jest funkcja Format.

Funkcja STR z pływakiem pozostawia końcowe zera, więc tego nie użyłem.

Funkcja Convert z liczbą zmiennoprzecinkową na ciąg znaków określa własną liczbę miejsc dziesiętnych, więc chciałem tego również uniknąć!

UPDATE Clinical.AAAJFJunk
SET [Call Length] =
      case when ISNULL([Call Length], '') = '' 
      then '' else 
            FORMAT(Cast ( CONVERT(numeric(16,4), CAST([Call Length] AS FLOAT)) as float),'########0.####')   end

Pamiętaj, że 0 w specyfikatorze formatu ma określone znaczenie.

Zobacz:

https://docs.microsoft .com/en-us/dotnet/standard/base-types/niestandardowe-ciągi-formatu-numerycznego




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieskończona pętla w CTE podczas analizowania tabeli odwołującej się do siebie

  2. dodaj +- 1 rok w SQL Server

  3. Jak przejść przez wszystkie tabele SQL?

  4. Wydajne zamienniki ISNUMERIC() w SQL Server?

  5. Sprawdź niewysłaną pocztę w SQL Server (T-SQL)