开发编码 · 实用工具

SQL IN列表生成:区分文本与数字并处理引号

文本值用单引号包裹,内部单引号写成两个;数字值只接受严格数值格式,不加引号;空值可写成 NULL。输出只是可检查的 SQL 文本,生产查询应使用参数绑定。

输入与处理

按下方说明输入参数,查看处理结果与适用限制。

工具在当前浏览器中处理输入,此功能不会向服务器提交文本或文件。

填写或调整参数后开始处理。

如何使用

  1. 每行输入一个值,选择文本或数字类型。
  2. 决定是否加括号、去空白、跳过空行和去重。
  3. 按需要把空值写成 NULL,检查单引号转义。
  4. 复制前人工复核,生产查询改用参数绑定。

文本值如何转义

SQL 字符串字面量用单引号界定,值内部的单引号按标准写成两个,例如 O'Brien 变成 'O''Brien'。这是 SQL 字面量转义,不是 HTML 或 JSON 转义。工具不处理反斜杠,因为反斜杠在 MySQL、PostgreSQL 等方言中的含义不同;需要方言特殊处理时,应使用驱动提供的转义或参数绑定。

数字、空值与去重

数字模式要求每个值符合十进制或科学计数法,不允许千位逗号、货币符号或单位,避免把“1,000”拼成非法 SQL。空行默认跳过;关闭跳过后,空字符串可作为文本值,勾选“空值写成 NULL”则输出不带引号的 NULL。去重按字面值进行,'1' 和 1 在不同类型下不会互相比较。

生成文本不等于安全查询

把用户输入拼进 SQL 仍可能导致注入或类型错误。工具能正确双写单引号,但不能覆盖所有数据库方言、字符集和注释规则。生产代码应使用参数化查询,把值作为参数传入,让驱动处理类型和转义。本工具适合一次性数据修复、人工审核的脚本或调试,不应成为运行时拼接用户输入的依据。

算例与操作参考

文本列表的引号

输入张三、李四、O'Brien,文本模式生成“('张三', '李四', 'O''Brien')”。若选择数字模式,O'Brien 不是有效数值,工具会报错。输入空行并关闭跳过、勾选 NULL,会在对应位置输出 NULL 而不是空字符串。

使用时留意

  • 把生成文本直接拼进生产查询,忽略参数化。
  • 数字列传入带千位逗号的值,工具报错。
  • 以为单引号双写能覆盖所有数据库方言。
  • 空字符串和 NULL 混用,查询语义改变。

常见问题

为什么不能直接用于生产查询?

字符串拼接容易遗漏上下文和方言差异,也无法保证类型安全。参数化查询把 SQL 结构与值分离,是防止注入的标准做法;本工具输出仅供人工检查或一次性脚本使用。

反斜杠会被转义吗?

不会。工具只按 SQL 标准双写单引号,不处理反斜杠。不同数据库对反斜杠的默认行为不同,含反斜杠的值应通过参数绑定或驱动转义处理。

规则与参考资料