Notepad++中批量转义SQL特殊字符需用正则:双引号"→",反斜杠→\;JSON转义应限定范围避免误改;全角标点、空格、编码问题须同步处理。

Notepad++里双引号、反斜杠等SQL特殊字符怎么批量转义
MySQL和PostgreSQL中,JSON字符串或带引号的值必须对 " 和 做转义,否则INSERT或UPDATE会报错:You have an error in your SQL syntax。Notepad++用正则一次处理最稳,别手动改。
常见错误现象:粘贴进数据库后提示Unterminated string literal,或者JSON字段入库后变成空值——基本就是双引号没转义。
- 查找目标填:
"(注意不加引号) - 替换为填:
" - 务必勾选「正则表达式」模式,否则只会替换第一个引号
- 如果原文含反斜杠(如Windows路径
C: empile.json),再追加一次替换:
查找\→ 替换为\\(SQL里一个反斜杠要写成两个)
行首行尾加单引号+逗号拼IN语句,但最后一行不能多逗号
直接用^和$全局替换会把最后一行也加上逗号,导致IN ('a','b',)语法错误。得拆两步走,或用更精准的正则。
- 先给每行开头加
':查找^→ 替换为' - 再给每行结尾加
',:查找$→ 替换为', - 最后手动删掉最后一行末尾的
,(快捷键Ctrl+End跳到文件末尾,Backspace一下) - 进阶方案:用
^(.+)$匹配整行,替换为'$1',,再用,(?=s*$)单独删掉结尾逗号(需启用「正则表达式」+「匹配新行」)
JSON字符串里嵌套引号太多,正则分组能避免误伤
比如原始文本是[{"label":"苹果","value":1}] 17,想转成UPDATE t SET json_col='[{"label":"苹果","value":1}]' WHERE id=17;——这时光替换所有"会把json_col=这种关键词里的引号也动了。
正确做法是只匹配 JSON 部分内的双引号,用分组锚定范围:
- 查找:
([.*?])s+(d+)(匹配 JSON 字符串 + 后面的数字 ID) - 替换:
UPDATE t SET json_col='$1' WHERE id=$2; - 再对整个文档单独执行引号转义(只在
json_col='...'单引号内生效),避免污染 SQL 关键字
中文标点、全角空格混入SQL导致执行失败
从Excel或网页复制数据时,常带全角逗号,、中文引号“”、不间断空格 ,MySQL直接报Unknown character set或Invalid utf8mb4 character。
- 查全角逗号:
,→ 替换为, - 查中文引号:
“|”→ 替换为"(正则选「正则表达式」,输入“|”) - 查不可见空格:用
s+匹配所有空白符,替换为单个空格;或更保守地用[[:space:]](需开启「正则表达式」) - 检查编码:菜单栏「编码」→ 确保是
UTF-8,不是ANSI或UTF-8-BOM(BOM可能干扰某些数据库客户端)
最易被忽略的是:正则替换时忘了关「匹配大小写」或「匹配整个单词」,结果id里的i被当成I替换了。所有操作前先确认搜索模式右下角图标是否为.*(正则)、Aa(大小写敏感关闭)、(整个词关闭)。


















