2011-12-23 10 views
6

Czy w MySQL jest wbudowana funkcja, która usuwa końcowe zera po prawej?MySQL Usuń Trailing Zero

mam próbek i chcę moje wyjście być tak:

1.0 ==> 1 
1.50 ==> 1.5 
10.030 ==> 10.03 
0.50 ==> 0.5 
0.0 ==> 0 
+2

Podobne pytania: [Usuń końcowe zera z dziesiętnych w SQL Server] (http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server), [Drop 0 value w miejscach dziesiętnych] (http://stackoverflow.com/questions/1831466/drop-0-value-in-decimal-places) –

+0

możliwy duplikat [Usuń końcowe zera w wartości dziesiętnej ze zmianą długości] (http: // stackoverflow .pl/questions/7968531/remove-trailing-zera-w-wartości dziesiętnej-ze zmianą-długości) – joran

Odpowiedz

8

rozwiązuje mojego problemu, korzystając w ten sposób:

(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM setpoint)AS char)))) AS setpoint 

przykład:

mysql> SELECT testid, designationid, test, measure, 
       (TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM setpoint)AS char)))) AS setpoint, 
       (TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM tmin)AS char)))) AS tmin, 
       (TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM tmax)AS char)))) AS tmax, 
     FROM tests 
+0

Czy to ostatecznie nie jest w stanie ponownie odkryć, jaki jest wbudowany łańcuch MySQL do odlewania numerycznego? –

+3

30 stanie się 3. Jest to Zła i NIEPRAWIDŁOWA odpowiedź i nigdy nie powinna była zostać zaakceptowana! Christopher McGowan podaje poprawną odpowiedź. – Jannes

8

Najłatwiej przez daleko, po prostu dodaj zero!

Przykłady:

SET 
    @yournumber1="1.0", 
    @yournumber2="1.50", 
    @yournumber3="10.030", 
    @yournumber4="0.50", 
    @yournumber5="0.0" 
; 

SELECT 
    (@yournumber1+0), 
    (@yournumber2+0), 
    (@yournumber3+0), 
    (@yournumber4+0), 
    (@yournumber5+0) 
; 

+------------------+------------------+------------------+------------------+------------------+ 
| (@yournumber1+0) | (@yournumber2+0) | (@yournumber3+0) | (@yournumber4+0) | (@yournumber5+0) | 
+------------------+------------------+------------------+------------------+------------------+ 
|    1 |    1.5 |   10.03 |    0.5 |    0 | 
+------------------+------------------+------------------+------------------+------------------+ 
1 row in set (0.00 sec) 

Jeśli kolumna swoją wartość pochodzi ze jest dziesiętnym czy liczbowy typ, a następnie wrzucił go do łańcucha najpierw upewnić się, że konwersja odbywa ... Ex:

SELECT (CAST(`column_name` AS CHAR)+0) FROM `table_name`; 

na krótszej drodze, wystarczy użyć dowolnego wbudowaną funkcję ciąg zrobić obsada:

SELECT TRIM(`column_name`)+0 FROM `table_name`; 
+2

'TRIM() + 0' jest idealny! – Mvorisek

-1

miałem Si Milar problem w sytuacji, gdy nie mogłem modyfikować kodu ani zapytania SQL, ale mogłem zmodyfikować strukturę bazy danych. Więc zmieniłem format kolumny z DECIMAL na FLOAT i rozwiązał mój problem.

+1

To może być niebezpieczna zmiana. Typ DECIMAL jest używany do dokładnych wartości. Typ FLOAT jest dla wartości przybliżonych. –

Powiązane problemy