2017-07-25 2 views
0

In einer SQL-Abfrage möchte ich numerischen Wert in Text mit mindestens Nein konvertieren. von Dezimalstellen, Beispiel, wenn die Zahl 2,50 ist, dann möchte ich Ausgabe als 2,5; Wenn Nummer 3 ist, dann möchte ich als 3 ausgeben; Wenn Nummer 18,75 ist, möchte ich Ausgabe als 18,75 usw. ausgeben.SQL Konvertieren von Zahlen in Text mit minimalen Dezimalstellen (dynamische Anzahl der Dezimalstellen) in SQL

Wie kann ich das erreichen?

EDIT 1: Um mehr Hintergrund zu geben, teile ich 2 numerische Werte und möchte das Ergebnis in Text mit minimal erforderlichen Dezimalstellen.

Danke.

+0

SQL Server 2012 – AllSolutions

Antwort

0

Wenn Sie wollen, 2 Dezimalstellen für die Division Werte zu erhalten, diese

Select case when right(cast (x/y as decimal(18,2)),1) = 0 
       then left (cast (x/y as decimal(18,2)),3) 
       else cast (x/y as decimal(18,2)) end ReqOutput 
2

In SQL 2012 verwenden und über Ihnen

SELECT FORMAT(15.0/4.0 , '#.########') 

Es verwendet FORMAT Funktion, die String.Format Funktionalität nutzt .NET schreiben.

0

Dies sollte den Trick ...

IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL 
DROP TABLE #TestData; 

CREATE TABLE #TestData (
    SomeNumber DECIMAL(9,7) NOT NULL 
    ); 
INSERT #TestData (SomeNumber) VALUES 
    (1.2345670), (1), (99.00100), (5.55); 


SELECT 
    td.SomeNumber, 
    REVERSE(STUFF(rcv.RevCastVarchar, 1, PATINDEX('%[^0.]%', rcv.RevCastVarchar) - 1, '')) 
FROM 
    #TestData td 
    CROSS APPLY (VALUES (REVERSE(CAST(td.SomeNumber AS VARCHAR(10))))) rcv (RevCastVarchar); 

HTH, Jason

Verwandte Themen