SQL Server FORMAT函数返回克罗地亚旧货币符号,如何获取正确欧元符号?
解决SQL Server FORMAT函数返回克罗地亚旧货币符号的问题
问题原因
SQL Server的FORMAT函数依赖Windows操作系统的区域设置数据,而Windows Server 2016默认的区域数据未包含克罗地亚2023年改用欧元的更新,因此调用FORMAT(1, 'C', 'hr-HR')时返回旧货币符号kn。
解决方案
方案1:更新Windows Server 2016系统区域数据
- 安装Windows Server 2016的最新累积更新(LCU):微软会在系统更新中推送区域设置的变更(包括货币符号更新),确保服务器安装所有可用的Windows更新。
- 验证并修改区域设置:更新完成后,打开控制面板 > 区域,选择克罗地亚(hr-HR)区域,检查货币符号是否已变为
€。若未自动更新,手动修改货币符号为€后保存设置。 - 重启SQL Server服务:让SQL Server读取更新后的系统区域数据,之后再执行
FORMAT函数即可返回正确结果。
方案2:自定义格式化字符串(无需系统更新)
如果暂时无法更新系统,可以绕过系统区域限制,手动拼接符合要求的格式:
-- 先按hr-HR格式格式化数字,再追加欧元符号 SELECT CONCAT(FORMAT(1, 'N2', 'hr-HR'), ' €')
执行结果为:1,00 €,完全符合需求。
方案3:使用CLR自定义函数(进阶)
若需要频繁使用符合最新区域标准的格式化,可创建CLR自定义函数,基于更新的.NET版本(如.NET 6+)的区域数据实现格式化,但需要开启SQL Server的CLR支持,适合有开发能力的场景。
内容的提问来源于stack exchange,提问作者hoggar
相关产品推荐
相关产品推荐

