MySQL在<;*时添加0。10
我似乎无法找到/创建一个工作查询,当点后的值小于0时,该查询将用额外的零更新x列。10-我得到了带有值的x列MySQL在<;*时添加0。10,mysql,sql,Mysql,Sql,我似乎无法找到/创建一个工作查询,当点后的值小于0时,该查询将用额外的零更新x列。10-我得到了带有值的x列 7.3 5.3 0.14 我正在尝试更新列,这样当点后面的值小于10时,它会添加一个零,上面的示例最终需要如下所示 7.03 5.03 0.14 有没有一种方法可以使用mysql更新查询来实现这一点 非常感谢。首先,0.03不等于0.30,所以我相信你想要的是7.30而不是7.03。为此,您需要更改表格列以显示两个十进制数字: my\u magic\u列浮点(3,2) 其中3是数字总
7.3
5.3
0.14
我正在尝试更新列,这样当点后面的值小于10时,它会添加一个零,上面的示例最终需要如下所示7.03
5.03
0.14
有没有一种方法可以使用mysql更新查询来实现这一点
非常感谢。首先,0.03不等于0.30,所以我相信你想要的是7.30而不是7.03。为此,您需要更改表格列以显示两个十进制数字:
my\u magic\u列浮点(3,2)
其中3是数字总数,2是要显示的小数位数。我真的不明白这种操作背后的含义,但它非常简单
SELECT CASE
WHEN INSTR(id, '.') = 0 THEN id
ELSE CASE
WHEN CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED) < 10 THEN
CONCAT(SUBSTRING_INDEX(id, '.', 1), '.0', CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED))
ELSE id
END
END as result
FROM table_name
UPDATE table_name SET id = CASE
WHEN INSTR(id, '.') = 0 THEN id
ELSE CASE
WHEN CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED) < 10 THEN
CONCAT(SUBSTRING_INDEX(id, '.', 1), '.0', CAST(SUBSTRING_INDEX(id, '.', -1) AS UNSIGNED))
ELSE id
END
END
选择案例
当INSTR(id,'.')=0时,则id
其他情况
当强制转换(子字符串索引(id,'.',1)为无符号时)<10,则
CONCAT(子串索引(id,'.',1),'.0',强制转换(子串索引(id,'.',1)为无符号))
其他id
结束
结果
从表\u名称
更新表\u名称集id=大小写
当INSTR(id,'.')=0时,则id
其他情况
当强制转换(子字符串索引(id,'.',1)为无符号时)<10,则
CONCAT(子串索引(id,'.',1),'.0',强制转换(子串索引(id,'.',1)为无符号))
其他id
结束
结束
但是在使用这个之前,请再次考虑一下您的模式以及您想要做什么。我想你不需要这个了。看起来你想做的是:
update TABLE set YOUR_NUMBER = (FLOOR(NUMBER) + (NUMBER-FLOOR(NUMBER))/10)
where FLOOR(NUMBER*10) = NUMBER*10
楼层(编号)
-取整数部分并添加到其中:
(数字-楼层(数字))/10
-数字的小数部分-除以10
where
条件检查点后面只有一个数字这确实给出了我正在搜索的输出,谢谢。是否有方法更新列,使其将“7.3”更新为“7.03”?@MoonDev是的,从SELECT
更改为update
非常简单。我希望你知道怎么做?我试过了,哈哈,但是当我这么做的时候,我得到了一个Mysql错误“对于正确的语法,在第1行使用near(..)when CAST(SUBST'at line 1)”@MoonDev你能显示代码吗?我尝试了你发布的代码,但更改了表名和select语句。我知道它不等于0.30。虽然我正在尝试找到一个将“7.3”设置为“7.03”的更新查询。好吧,伙计,你的问题有点误导。3不小于.10
!你的例子是错误的。