SQL中MONEY类型查询输出缺失$符号的问题求助
解决MONEY类型查询时显示$符号的问题
原因说明
MONEY类型本质是数值型存储,仅保存金额的数值部分,不会存储货币符号(比如$)。你插入时输入的$只是输入格式,数据库会自动解析为纯数值存入,所以直接SELECT *不会显示符号。
解决方案
根据你使用的数据库,用对应的格式化函数将数值转换为带$的字符串格式:
1. SQL Server
使用FORMAT()函数指定货币格式:
SELECT -- 替换为你的其他字段,比如ProductID、ProductName ProductID, ProductName, FORMAT(ProductPrice, 'C', 'en-US') AS FormattedPrice FROM PRODUCT;
'C'代表货币格式,'en-US'指定美式英语区域,会自动添加$符号并保留两位小数。
2. MySQL
用CONCAT()拼接$符号和格式化后的数值:
SELECT ProductID, ProductName, CONCAT('$', FORMAT(ProductPrice, 2)) AS FormattedPrice FROM PRODUCT;
FORMAT()的第二个参数控制小数位数,确保金额显示标准的两位小数。
3. PostgreSQL
使用TO_CHAR()自定义格式模板:
SELECT ProductID, ProductName, TO_CHAR(ProductPrice, '$999999.99') AS FormattedPrice FROM PRODUCT;
$999999.99是格式模板,9代表任意数字位,可根据你实际的金额范围调整位数(比如金额更大就加更多9)。
注意事项
- 格式化后的结果是字符串类型,如果需要后续做数值计算,建议保留原
ProductPrice字段,仅在展示场景使用格式化后的字段。 - 区域参数(比如
en-US)决定显示的货币符号,若需要其他货币符号可替换对应的区域代码。
内容的提问来源于stack exchange,提问作者Asim
相关产品推荐
相关产品推荐

