在MySQL中更改小数点分隔符

25

在MySQL输出中,是否可以将小数点(“.”)更改为其他字符(逗号)?我不想使用像FORMAT这样的函数,只想使用我正常使用的所有查询,而不进行任何修改。我正在寻找某些设置(某些变量、语言环境等)。我尝试搜索手册但没有成功。


1
我不太理解这个 - 你所说的“MySQL输出”是什么意思?是通过mysql命令行客户端显示查询结果吗?MySQL没有定义数字值的小数分隔符,而是由用于人类使用的语言和框架来定义它们的输出。 - Matt H
1
@MattH,我的意思是任何客户端输出(控制台、PHP等)。在PHP中的问题是,即使数据库字段的类型为“double”,你仍然会得到字符串。因此,在PHP方面没有明显的通用解决方案,所以我正在寻找MySQL的解决方案。 - Tomas
2个回答

37

CSV导出技巧提示:SELECT REPLACE(CAST(prijs_incl AS CHAR), '.', ',') 可以生成适用于欧洲电子表格数值字段的输入内容。

注:CSV是一种常见的数据文件格式,全称为Comma-Separated Values(逗号分隔值),用于在不同应用程序和系统之间交换数据。

18
虽然您可以直接使用SELECT REPLACE(prijs_incl, '.', ',')进行字符串转换,因为自动进行转换,这是有用的。请参阅mysql文档 - vicenteherrera
1
这对小于1000的数字无效。例如:1.000,00将变成1,000,00。因此,它无法正常工作。 - Guilherme Oliveira

24

不行,这是SQL标准,MySQL(至少在这一点上)遵守该标准。

问题实际上并不是输出(正如你所提到的,在大多数数据库管理系统中有各种FORMAT函数),而是INSERT。例如,如果您可以使用逗号,作为小数点(在其他语言环境中很常见),并且该逗号也用作值分隔符,则插入将变得含糊不清。请参阅我在此问题中的答案:insert-non-english-decimal-points-in-mysql


ypercube,谢谢。SQL标准是什么?是SQL查询语法、输出格式还是两者都包括?我只需要输出结果,所以如果我执行select 1/3,它应该输出0.33333 - Tomas
我不确定输出格式是否在SQL标准中指定,或者是否被省略且可以因连接方法/框架而异。但我不知道在MySQL中如何实现这一点。 - ypercubeᵀᴹ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接