¿Hay una función incorporada en MySQL que elimine los ceros finales a la derecha?MySQL Eliminar cero pendiente
tengo muestras y quiero que mi salida sea así:
1.0 ==> 1
1.50 ==> 1.5
10.030 ==> 10.03
0.50 ==> 0.5
0.0 ==> 0
¿Hay una función incorporada en MySQL que elimine los ceros finales a la derecha?MySQL Eliminar cero pendiente
tengo muestras y quiero que mi salida sea así:
1.0 ==> 1
1.50 ==> 1.5
10.030 ==> 10.03
0.50 ==> 0.5
0.0 ==> 0
que resuelve mi problema con esto:
(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM setpoint)AS char)))) AS setpoint
ejemplo:
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
¿No reinventa esto lo que hace la cadena integrada de MySQL a la conversión de tipo numérico? –
30 se convertirá en 3. ¡Esta es una respuesta MALA y INCORRECTA y nunca debería haber sido aceptada! Christopher McGowan da la respuesta correcta. – Jannes
manera más fácil de ahora, solo agrega cero!
Ejemplos:
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)
la columna de su valor proviene de decimal o es de tipo numérico, luego echarlo a primera cadena para asegurarse de que la conversión tiene lugar ... Ejemplo:
SELECT (CAST(`column_name` AS CHAR)+0) FROM `table_name`;
Por un camino más corto, sólo tiene que utilizar cualquier función de cadena incorporado para hacer el reparto:
SELECT TRIM(`column_name`)+0 FROM `table_name`;
'TRIM() + 0' es perfecto! – Mvorisek
que tenía una relación Si problema similar en una situación en la que no pude modificar el código ni la consulta SQL, pero se me permitió modificar la estructura de la base de datos. Así que cambié el formato de columna de DECIMAL a FLOAT y resolvió mi problema.
Eso podría ser un cambio peligroso. El tipo DECIMAL se usa para valores exactos. El tipo FLOAT es para valores aproximados. –
Preguntas similares: [Eliminar ceros finales de decimal en SQL Server] (http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server), [Drop 0 value en lugares decimales] (http://stackoverflow.com/questions/1831466/drop-0-value-in-decimal-places) –
posible duplicado de [Eliminar ceros finales en valor decimal con el cambio de longitud] (http: // stackoverflow .com/questions/7968531/remove-trailing-zeros-in-decimal-value-with-changing-length) – joran