【问题标题】:How to change in mysql datatype float dot to comma?如何将mysql数据类型float dot更改为逗号?
【发布时间】:2023-04-09 11:26:01
【问题描述】:

在我的 mysql 数据库中,我有一个 float 数据类型和长度为 10,2 的列。 当我将数据按行放入数据库时​​,它看起来像这样:

2,589.20

在我的国家塞尔维亚,视觉上需要如下所示:

2.589,20

(第一个点,然后是逗号)。

当我在表单的“值”(输入)number_format($number, 2, '.', ',') 中使用它时,我可以将$number 放入数据库中,但如果它是“值”中的number_format($faktura_cenanasa, 2, ',', '.'),那么我不能放入它由于“值”的格式错误,在数据库中。只有当我在表单中重新加载数据时才会出现这个问题,当我在站点的其他地方重新加载它时它不是问题(当我在屏幕上打印它时)。

【问题讨论】:

  • 不要改变你的数据库结构,否则 MySQL 将无法根据需要使用它。您可以使用FORMAT() 更改其输出方式。对于输入,您需要使用不使用逗号的标准格式 (123467.32)
  • 或者如果你使用php,那么在通过php打印出来的时候格式化数字。 MySQL 不会以格式化的方式存储数据,每次格式化都是显示数据的应用程序的责任。

标签: php mysql


【解决方案1】:

由于四舍五入的数字格式可能会返回误导性输出,尤其是对于大数字。

例如

echo number_format( 1000000000000000000.00952, 2 );
// output: 1,000,000,000,000,000,000.00
echo number_format( 9999999999999999999.00952, 2 );
// output: 10,000,000,000,000,000,000.00
echo number_format( 999999999999999999999999999.00952, 2 );
// output: 1,000,000,000,000,000,013,287,555,072.00

或者像@aynber 在评论中写的那样,您应该在查询中再添加一个别名列或用FORMAT 替换数字列

SELECT ..., FORMAT( `number`, 2, 'de_DE' ) AS `formatted_number`
  FROM ...

在将语言环境替换为塞尔维亚语(在示例中为“de_DE”)之前,您应该检查它是否可用于 Mysql Locale Support

另外,以防万一,确保格式化的输出符合您的预期。在某些情况下,您的结果可能类似于以下内容,而两者的格式应该相同。

SELECT FORMAT(12500000000000.2015, 2,'de_DE'), FORMAT(12500000000000.2015, 2,'el_GR');
+----------------------------------------+----------------------------------------+
| FORMAT(12500000000000.2015, 2,'de_DE') | FORMAT(12500000000000.2015, 2,'el_GR') |
+----------------------------------------+----------------------------------------+
| 12.500.000.000.000,20                  | 12500000000000,20                      |
+----------------------------------------+----------------------------------------+

更新

当您收到格式化的数字时 - 不再是数字而是字符串 - 您将能够随意编辑它。但是,在将其存储回数据库之前,您需要删除所有千位分隔符,然后将小数点更改为“.”,即

$number = str_replace( [ '.', ',' ], ['', '.'], $number );

最后插入,就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多