Microsoft Access SQL联合查询货币符号异常 如何修改为英镑符号
问题产生原因
Access执行UNION联合查询时出现货币符号异常,核心是UNION查询的格式继承逻辑和普通选择查询不同,具体触发场景包括:
- UNION查询生成的是临时虚拟结果集,不会自动继承源数据表字段绑定的货币显示格式,这是和普通单表/多表关联选择查询的核心差异。
- 结果集的默认显示格式优先级为:优先读取UNION语句中第一个SELECT子句对应位置字段的格式属性;如果第一个SELECT的对应字段未显式指定格式,就会调用当前Access数据库的默认货币配置;如果数据库未单独配置,则读取Windows系统区域设置中的默认货币符号,若环境默认货币为欧元,就会统一显示€。
- 若两张源表的金额字段格式设置不一致,且格式为欧元的字段被放在了UNION语句的第一个SELECT块中,整个查询的金额列就会统一沿用欧元格式显示。
修复操作方法
根据你的使用场景选以下任意一种方法即可:
- 方法1:SQL语句中强制指定格式(最稳定,不受环境配置影响)
在UNION的第一个SELECT块中,用Format()函数给金额字段显式指定英镑显示格式,后续所有UNION分支的同位置字段会自动沿用该格式,示例代码:
注意带格式定义的字段必须放在第一个SELECT块中,放在后续UNION分支不会生效。SELECT 单据编号, Format(交易金额,"£#,##0.00") AS 交易金额, 交易时间 FROM 伦敦门店交易表 UNION ALL SELECT 单据编号, 交易金额, 交易时间 FROM 曼彻斯特门店交易表; - 方法2:直接修改查询字段属性(无需改动SQL语句)
- 保存已写好的UNION查询,切换到设计视图(弹出“无法在设计视图中显示联合查询”的提示时直接点确定即可)
- 右键点击金额字段列,选择「属性」
- 在属性面板的「格式」输入框中填入
£#,##0.00,保存查询后重新打开即可固定显示英镑符号。
- 方法3:修改数据库默认货币配置(适合全库均使用英镑结算的场景)
打开Access选项面板,依次进入「文件」-「选项」-「常规」,找到“创建数据库时使用的默认货币格式”项,将其修改为英镑£,后续新建的表、查询默认都会使用英镑作为货币符号,不会出现符号错乱问题。
内容的提问来源于stack exchange,提问作者Mens Mens
相关产品推荐
相关产品推荐

