Sybase konvertieren von float zu string

Ich eine Anforderung haben, konvertieren die Felder in float zu string, mit folgenden Einschränkungen

  1. Müssen, kürzen Sie die Ergebnisse nach 6 stellen nach dem Dezimalpunkt
  2. Abschneiden nachgestellte Nullen nach dem Dezimaltrennzeichen

Beispiel:

  1. 17.666655942234 ==> in eine Zeichenfolge konvertiert "17.666655"
  2. 17.6 ==> in eine Zeichenfolge konvertiert "17.6" und nicht "17.600000"
  3. 17.66 ==> in eine Zeichenfolge konvertiert "17.66"

Ich habe versucht, die folgenden, aber nicht für einige der oben genannten Anforderungen erfüllt und auch nicht in der Lage zu löschen, die null ist.

select 
CASE WHEN RIGHT(convert(VARCHAR, cast(cast(product_price as DECIMAL(28,6))  as float)),2) = ".0"
THEN LEFT(convert(VARCHAR, product_price),(CHAR_LENGTH(convert(VARCHAR(15), product_price))-2))
ELSE substring( convert(VARCHAR, cast(cast(product_price as DECIMAL(28,7))  as float)),1, charindex(".",convert(VARCHAR, cast(cast(product_price as DECIMAL(28,7))  as float)))+6) END 
from #TEMP

#TEMP-Daten

id | product_price
-------------------
1  | 17.3435302323
2  | 17.700000000
3  | 17.60
4  | 19.0

Ich denke, ich habe kompliziert die Abfrage, und eine einfachere version vorhanden ist.

Ich weiß, das könnte leicht gehandhabt werden in high-level-Sprache, aber wenn dies kann leicht untergebracht werden in der Abfrage selbst dann lassen Sie es mich bitte wissen.

InformationsquelleAutor mtk | 2012-10-11

Schreibe einen Kommentar