Excel中MS Query返回空列但SSMS正常的问题求助
解决MS Query导入Excel时float字段为空的问题
方法1:显式转换为字符串(带格式控制)
直接在SSMS的查询语句里把us.prod_qty转成字符串,规避MS Query和Excel的类型识别冲突:
- 需要保留指定小数位(比如2位):
SELECT -- 其他字段 CAST(us.prod_qty AS VARCHAR(20)) AS prod_qty_str -- SQL Server 2012及以上版本可用FORMAT函数更灵活 -- FORMAT(us.prod_qty, 'N2') AS prod_qty_str FROM 你的表名 us
- 若字段实际是整数型float值,转成整数字符串:
SELECT -- 其他字段 CAST(CAST(us.prod_qty AS INT) AS VARCHAR(20)) AS prod_qty_str FROM 你的表名 us
方法2:调整MS Query的字段类型设置
不想改查询语句的话,直接在MS Query里修改字段类型:
- 打开MS Query加载查询后,点击「视图」→「SQL」确认语句
- 点击「视图」→「数据属性」
- 找到
prod_qty字段,将数据类型改为「文本」,保存后再导入Excel
方法3:处理特殊float值
如果字段里存在NULL、NaN或无穷大值,Excel会无法识别导致显示为空,提前在查询里过滤或替换:
SELECT -- 其他字段 CASE WHEN us.prod_qty IS NULL THEN '0' WHEN us.prod_qty = 'NaN' THEN '0' ELSE CAST(us.prod_qty AS VARCHAR(20)) END AS prod_qty_str FROM 你的表名 us
内容的提问来源于stack exchange,提问作者TeleJim
相关产品推荐
相关产品推荐

