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
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
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
Czy to ostatecznie nie jest w stanie ponownie odkryć, jaki jest wbudowany łańcuch MySQL do odlewania numerycznego? –
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
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`;
'TRIM() + 0' jest idealny! – Mvorisek
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.
To może być niebezpieczna zmiana. Typ DECIMAL jest używany do dokładnych wartości. Typ FLOAT jest dla wartości przybliżonych. –
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) –
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