2011-12-15 12 views
6

Sto cercando di utilizzare il formato all'interno di una query SQL per soddisfare un pacchetto di report. Ho numeri che ho bisogno di mostrare come valuta con due cifre decimali, quindi sto usando il comando format per farlo. Il problema è che il formato mette anche in una virgola per separare le migliaia e la funzione di somma reporting package non può gestire questo modo considera il valore numerico formattato come testo e non inserirlo nella query utilizza: -.Query MYSQL: utilizzare il formato ma nessuna virgola

SELECT customers.name AS "customers name", FORMAT(contracts.charge,2) AS "contracts charge" 
FROM customers 
ORDER BY customers.name 

(la query reale è molto più complesso, ma questa è la parte rilevante)

Per spiegare meglio: -

Se il valore numerico è 123,1 l'output formattato è 123.10 che funziona. Se il valore numerico è 1234,1 l'output formattato è 1,234.10 che non

ho bisogno di trovare un modo per convincere la query per l'output 1234,10

Molte grazie

risposta

14

si può solo:

REPLACE(FORMAT(contracts.charge, 2), ',', '') 
3

Una possibile soluzione sarebbe sostituendo la virgola dopo il formato:

REPLACE(FORMAT(contracts.charge,2),',','') AS "contracts charge" 
+0

Molte grazie, che ha lavorato splendidamente –

0

Invertir, in decimale. a miglia SOSTITUISCI (REPLACE (REPLACE (FORMAT (contracts.charge, 2), ',', '-'), '.', ','), '-', '.') Contratto_si carica

+0

Davvero dovrebbero essere impostando loro locale correttamente, non cercando di fare la sostituzione stringa esistente formattazione come questo. – Iguananaut

5

questo post sembra avere una soluzione molto più pulito:

Basta usare ROUND, si tratta di una funzione numerica. FORMAT è una funzione di stringa