# 在线用 SQL 查询 CSV/JSON - 浏览器本地运行，支持 JOIN

> 免费在线对 CSV、TSV、JSON 文件运行 SQL：自动推断类型，支持 WHERE、GROUP BY、聚合、JOIN、CASE、子查询和常用函数，10 万行秒出结果，导出 CSV/JSON。

- 网址: https://qilingtools.com/zh/csv-sql
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [开发](https://qilingtools.com/zh/tags/dev), [数据格式](https://qilingtools.com/zh/tags/data)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

手上有几个 CSV 或 JSON 文件，想做筛选、分组汇总或把两张表关联起来，又不想为此装数据库？把文件拖进来，每个文件就是一张表，表名取自文件名，列类型（数字、文本、布尔）自动推断，空单元格视为 NULL，像 00123 这样带前导零的编号保留为文本。然后直接写 SQL：SELECT 表达式和别名、DISTINCT、WHERE 中的 AND/OR/NOT、比较、LIKE、IN、BETWEEN、IS NULL，GROUP BY 配合 COUNT、SUM、AVG、MIN、MAX、COUNT(DISTINCT)、GROUP_CONCAT、MEDIAN，HAVING，多列 ORDER BY（可指定 NULLS FIRST/LAST），LIMIT/OFFSET，INNER/LEFT/CROSS JOIN（等值条件用哈希连接），CASE WHEN、CAST，以及字符串、数学和日期函数（YEAR、MONTH、EXTRACT、STRFTIME、DATE_TRUNC、DATEDIFF 等），FROM 和 IN 里也可以写子查询。NULL 按标准 SQL 的三值逻辑处理。查询引擎是为本工具编写的轻量实现，10 万行的分组统计通常在几十毫秒内完成。出错时会指出具体行列并给出“是不是想写某列”的提示。左侧显示每张表的列和类型，点击即可插入；运行过的查询保存在历史记录里；结果表格虚拟滚动，可导出 CSV（带 BOM，Excel 打开不乱码）或 JSON。文件只在浏览器中读取，不会上传。

## 使用步骤

1. 拖入或选择 CSV、TSV、JSON / NDJSON 文件（可多个），或载入示例数据
2. 在查询框里写 SQL，按 Ctrl/⌘ + Enter 运行；点击左侧列名可快速插入
3. 查看结果表格，导出为 CSV 或 JSON，历史记录可随时重新运行

## 功能特点

- 多文件多表，表名可重命名，列类型自动推断
- SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT
- COUNT、SUM、AVG、MIN、MAX、COUNT(DISTINCT)、GROUP_CONCAT、MEDIAN
- INNER、LEFT、CROSS JOIN，等值条件哈希连接
- CASE WHEN、CAST、字符串/数学/日期函数
- FROM 子查询、IN 子查询、标量子查询
- 带行列位置与拼写建议的错误提示
- 虚拟滚动结果表，导出 CSV / JSON，查询历史

## 常见问题

### 支持哪些 SQL 语法？

支持单条 SELECT 查询：DISTINCT、表达式与别名、WHERE（AND/OR/NOT、=、<>、<、>、LIKE、IN、BETWEEN、IS NULL、IS DISTINCT FROM）、GROUP BY（可写别名或列序号）、HAVING、ORDER BY（多列、ASC/DESC、NULLS FIRST/LAST）、LIMIT/OFFSET、INNER/LEFT/CROSS JOIN 与 USING、CASE、CAST 或 x::int、FROM/IN 子查询和标量子查询。暂不支持 RIGHT/FULL JOIN、UNION、WITH 和窗口函数，也不支持修改数据的 INSERT/UPDATE。

### 列类型是怎么判断的？

一列中所有非空值都是数字时为数字列，都是 true/false 时为布尔列，否则为文本列；空单元格为 NULL。带前导零的值（如邮编 00123、编号 007）会让整列保持文本，避免丢掉前导零。日期按文本保存，ISO 格式（2024-03-01）可以直接比较大小，也可以用 YEAR()、DATE_TRUNC() 等函数处理。JSON 中嵌套的对象会展开成“父键_子键”列，数组存为 JSON 文本。

### NULL 和排序是怎么处理的？

遵循标准 SQL 的三值逻辑：NULL 与任何值比较结果都是 NULL，WHERE 只保留结果为真的行，所以 salary <> 4000 不会返回 salary 为空的行；NOT IN 的列表里有 NULL 时不返回任何行。COUNT(列) 不计 NULL，SUM/AVG 忽略 NULL，没有行时 SUM 返回 NULL、COUNT 返回 0。升序时 NULL 排在最前、降序时排在最后（与 SQLite、MySQL 一致），可以用 NULLS FIRST / NULLS LAST 改变。排序是稳定的，值相同的行保持原来的顺序。

### 能处理多大的文件？

所有数据都加载在浏览器内存里，几十万行、几十 MB 的 CSV 通常没有问题：10 万行做分组统计、关联或排序一般在 0.1 秒以内。等值 JOIN 使用哈希连接，没有等值条件的 JOIN 会逐行比较，结果超过 5000 万组合时会拒绝执行。更大的数据建议先用 WHERE 过滤或拆分文件。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
