Navicat Premium 17 的千位分隔符需在「工具 > 选项 > 记录」中启用,重启后生效,仅影响数据网格显示,不改变导出结果或SQL输出;字符串型数字无效,列宽不足时可能隐藏逗号。

Navicat Premium 17 默认不启用千位分隔符,必须手动开启,且该设置只影响数据网格(Data Grid)中数字字段的显示,不影响导出文件或 SQL 查询结果本身。
在哪找“显示千位分隔符”开关
这个选项藏在「工具 > 选项」里,不是「偏好设置」——后者是 macOS 版本的入口,Windows/macOS 通用路径是:工具 > 选项 > 记录。注意:不是「常规」或「外观」页签,必须点进「记录」页签才能看到勾选框。
常见错误是误入 编辑器 > SQL 编辑器 或 连接 > MySQL 这类数据库专属设置页,那些地方没有该选项。
- 勾选
显示千位分隔符后,需点击「确定」并**重启 Navicat** 才生效(17 版仍保留此要求,未做到热更新) - 该设置对所有已连接的数据库类型(MySQL、PostgreSQL、SQL Server 等)统一生效,无需按数据库单独配置
- 如果重启后仍不显示,检查字段实际数据类型是否为数值型(如
INT、DECIMAL、FLOAT),字符串型数字(如VARCHAR存 "1000000")不会被格式化
为什么有些数字还是没加逗号?
千位分隔符仅作用于「整数部分」,且受小数位数影响。例如:1234567.89 会显示为 1,234,567.89,但 1234567.89000 若字段定义为 DECIMAL(10,5),Navicat 可能因精度对齐策略省略逗号(尤其在列宽较窄时)。
这不是 bug,而是渲染逻辑:当单元格宽度不足以完整显示带逗号+小数的格式时,Navicat 会优先保证小数位可见,临时舍弃千位符。
- 临时验证方法:拖宽该列,看逗号是否出现
- 长期解决:在表设计中避免过度冗余小数位(如不用
DECIMAL(15,10)存金额) - 该行为与数据库服务端无关,纯客户端渲染,所以改服务器
lc_numeric或SET lc_monetary没用
和“数字格式”设置的关系
显示千位分隔符 是全局开关,而「数字格式」是字段级自定义(右键字段标题 > 数字格式)。两者可叠加,但有优先级:
若你为某列单独设置了数字格式(如 #,##0.00),则该列以自定义格式为准,忽略全局千位开关;其他未设置的列才走全局规则。
- 自定义格式支持 Excel 风格代码,
,表示千位符,0强制补零,#不补无意义零 - 例如设为
#,##0.00,值1234.5显示为1,234.50;设为#,##0则显示为1,234 - 注意:自定义格式不改变实际值,导出 CSV/Excel 时仍为原始数字,除非导出设置里勾选了「使用当前显示格式」
真正容易被忽略的是:「显示千位分隔符」只控制逗号,不控制货币符号、百分比或小数位数——这些全靠「数字格式」单独配。很多人开了开关却发现金额没 $,就以为功能失效,其实是漏设了格式字符串里的 $ 符号。











