我有一个程序,我正在显示赔率,但客户只想显示有效数字.因此,1.50将显示为"1.5",而1.00将显示为"1".
如何让MySQL不显示尾随零;
即在数据库中:
赔率
1.500
23.030
2.000
4.450
会显示为
1.5
23.03
2
4.45
谢谢你的帮助
Chr*_*wan 57
到目前为止最简单的方法,只需添加零!
例子:
SET
@yournumber1="1.500",
@yournumber2="23.030",
@yournumber3="2.000",
@yournumber4="4.450"
;
SELECT
(@yournumber1+0),
(@yournumber2+0),
(@yournumber3+0),
(@yournumber4+0)
;
+------------------+------------------+------------------+------------------+
| (@yournumber1+0) | (@yournumber2+0) | (@yournumber3+0) | (@yournumber4+0) |
+------------------+------------------+------------------+------------------+
| 1.5 | 23.03 | 2 | 4.45 |
+------------------+------------------+------------------+------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如果您的值来自的列是DECIMAL或NUMERIC类型,则首先将其强制转换为字符串以确保转换发生... ex:
SELECT (CAST(`column_name` AS CHAR)+0) FROM `table_name`;
Run Code Online (Sandbox Code Playgroud)
对于更短的方法,只需使用任何内置的字符串函数来执行转换:
SELECT TRIM(`column_name`)+0 FROM `table_name`;
Run Code Online (Sandbox Code Playgroud)
foo*_*ncy 43
编辑:我会用Christopher McGowan的答案代替 - 将值加0,这样更好.
如果进行修剪,检查实际上是否有小数点非常重要.
所以我想你想用:
SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING '0' from yourfield)) AS yourfield
FROM yourtable
WHERE yourfield LIKE '%.%'
Run Code Online (Sandbox Code Playgroud)
这对我有用..将字段围绕2位小数,然后修剪任何尾随零
所以2.10是2.1
SELECT trim(round(FIELDNAME,2))+0
FROM tbl_name
....
Run Code Online (Sandbox Code Playgroud)
要从DECIMAL/NUMERIC或字符串类型列中删除尾随零,您可以简单地将值转换为DOUBLE,例如:
SELECT CAST(mycol AS DOUBLE) from mytable;
Run Code Online (Sandbox Code Playgroud)
或者
SELECT mycol + 0E0 FROM mytable;
Run Code Online (Sandbox Code Playgroud)
事实上,其他答案中提到的“转换为 char 并添加零”技巧具有相同的作用,但以更间接(并且可能效率较低)的方式,例如:
SELECT CAST(mycol AS CHAR)+0 FROM mytable; -- converts to string, then to number
SELECT TRIM(mycol)+0 FROM mytable; -- ditto
Run Code Online (Sandbox Code Playgroud)
Mar*_*c B -19
SELECT TRIM(TRAILING '0' FROM yourodds)
FROM ...
Run Code Online (Sandbox Code Playgroud)
TRIM 函数的文档。
| 归档时间: |
|
| 查看次数: |
38424 次 |
| 最近记录: |