【发布时间】:2015-11-20 13:18:49
【问题描述】:
这是我的桌子:
// table
+----+--------+
| id | number |
+----+--------+
| 1 | 123 |
| 2 | 123. |
| 3 | 12.3 |
+----+--------+
我想要这个:
// newtable
+----+--------+
| id | number |
+----+--------+
| 1 | 123 |
| 2 | 123 |
| 3 | 12.3 |
+----+--------+
我该怎么做?
我可以这样做:(但我正在寻找更快更好的方法)
// Not tested, But I think this works!
SELECT
id,
IF(RIGHT(number,1) == '.', REPLACE(number, '.', ''), number)
FROM table
// also I can use CAST(number as unsigned) instead of REPLACE(number, '.', '')
嗯,有没有更好的解决方案? (没有IF-statement)
【问题讨论】:
-
你是说名为
number的列不是使用数字类型存储的吗?这似乎是第一个问题。 -
首先:你想达到什么目的?您是否想替换数据库中以点字符结尾的值?你只是想改变数据库的输出吗?
-
@GordonLinoff
number具有int(11)类型。但是我在我的查询ROUND(number/1000,1)中使用了类似的东西,然后.(point) 会出现......我也使用了SUBSTR(),然后有时我最后得到一个.那个号码,现在我想删除它。 -
@HerrSerker 我想要做的是检测一个更好的方法来做this。其实我想消除那个中间
IF-statement。 -
也许 ypu 应该在输出中而不是在业务逻辑中解决这个问题?您从什么语言/框架查询?