gpt4 book ai didi

mysql - 尝试将 varchar 转换为 decimal 时的奇怪行为

转载 作者:行者123 更新时间:2023-11-29 04:35:36 26 4
gpt4 key购买 nike

我有一个包含列 mrr varchar(64) 的表。我无法更改列的类型。

这个简单的查询:

select mrr, cast(mrr as decimal(10,2)) ass f_mrr
FROM projects
where mrr is not null and creator_fname='Lisa'

返回意想不到的结果。这是部分列表:

mrr         cast(mrr as decimal(10,2))
663.90 663.90
40.00 40.00
675.00 675.00
0.00 0.00
100.00 100.00
2,950.00 2.00
3,779.90 3.00
-8,482.00 -8.00

最后 3 行怎么了?我假设是 CAST 执行此操作。

谁能解释一下这是怎么回事?
为什么它只对某些行执行此操作而不对其他行执行此操作?

如何可靠地将 varchar(64) 转换为 decimal

最佳答案

这是怎么回事,逗号不是有效数字的一部分。 MySQL 在第一个非“数字”字符处停止解析数字。

当 MySQL 将字符串转换为数字时,它仅转换前导“数字”字符,这些字符由可选的前导符号、数字、可选的小数点和更多数字组成。

其他所有内容都被截断/忽略。顺便说一句,这包括整个字符串,如果它不是以“数字”开头的话。

您可以尝试以下查询:

select mrr, cast(trim(replace(mrr, ',', '')) as decimal(10,2)) as f_mrr
from projects
where mrr is not null and creator_fname = 'Lisa'

关于mysql - 尝试将 varchar 转换为 decimal 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com