gpt4 book ai didi

mysql - MariaDB 字段的有趣问题

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

我正在尝试保存一些带有货币符号前缀的值,例如 10 欧元。然而,当我在数据库中手动输入它们时,欧元符号时不时会变成?。当我查询该行时,有时会再次得到带有值的问号,有时会得到 NaN 的完整值。如果我使用电子邮件字段或唯一标识符查询该行,问题就会发生变化。使用 $ 或 ® 代替 € 没有任何问题;不过,甚至 ™ 也变成了 ?。

奇怪的是,如果我尝试用原始字符替换问号,MariaDB 会提示该行没有变化,就像该字符实际上存在一样,即使没有显示!

我尝试重新启动 MariaDB,以防万一,但问题仍然存在。我使用 UTF32 进行编码,使用 utf32_unicode_ci 进行排序。我正在用 Sequel_pro 测试这个东西,甚至没有接触 php 来不堆叠东西。无论如何,如果我从 php 脚本执行查询并使用 JSON 解析结果,我会得到 null 值。

这些特殊字符可能存在什么问题?

最佳答案

计划 A:将金额存储为字符串,并且尝试从中获取值。正如已经提到的,这需要“始终采用 utf8”。

B 计划:仅将金额存储在数字字段中。将“货币”存储在另一个字段中作为“欧元”或“美元”或...或者简单地假设所有金额都是欧元。然后在打印时将欧元符号放在金额前面。

不要使用DOUBLEFLOAT,您会得到不需要的额外舍入。相反,请考虑 DECIMAL(11,2)。这将准确处理大多数国家的金额。 (一些国家需要 4 位小数;有些国家可以接受 0 位。)

不要使用utf32;使用utf8(或utf8mb4)。

数据库是数据存储库,而不是格式化工具。保持这种区别将有助于避免此类问题。

关于mysql - MariaDB 字段的有趣问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967976/

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