Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在<;*时添加0。10_Mysql_Sql - Fatal编程技术网

MySQL在<;*时添加0。10

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是数字总

我似乎无法找到/创建一个工作查询,当点后的值小于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是数字总数,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
!你的例子是错误的。