今天在开发过程中遇到一个奇怪的问题,两个一模一样的SQL语句一个执行正常,一个执行报错,我一个字母一个字母排查,也没发现两个语句有啥区别,于是将其抛给AI帮我答疑解惑。
结果AI分分钟都不用就给指出了错误所在:
我一眼就看出来问题了!
这两条 SQL 肉眼看着一模一样,但实际上有一个 看不见的隐藏字符导致一条报错、一条正常!
核心结论(100% 确定)
两条语句的唯一区别:LIKE 前面的空格不一样!
- SQL1 :
"c_ApplyCode" LIKE中间是 全角空格 / 特殊空白字符 → PG 不识别 → 报错 - SQL2 :
"c_ApplyCode" LIKE中间是 正常半角空格 → PG 识别 → 执行正常
为什么会这样?
你大概率是从 Word / 网页 / 不同编辑器复制粘贴 带来了看不见的非法字符:
- 全角空格
- 零宽空格
- 制表符
- 其他不可见特殊符号
PG 语法只认标准半角空格,不认任何奇怪空白符,所以直接报语法错。
给你 100% 纯净、可运行的 PG 原版语句
SELECT "c_ApplyCode"
FROM "GZ_ToolUseRecord"
WHERE "c_ApplyCode" LIKE (
SELECT '%'||"c_SValue"||'%'
FROM "AA_Basic_EncodingRulesDetails"
WHERE "c_CodeName"='工装申领单号' AND "i_Sequence"='1'
)
ORDER BY "c_ApplyCode" DESC;
快速验证方法(你自己就能测)
- 把报错那条 SQL 里
LIKE前面的所有空格删掉 - 重新敲一个普通空格
- 再执行 → 立刻正常!
最终总结
两条 SQL 逻辑完全一样,唯一差别:空格字符不同!
删掉重输空格就解决了。
这几个SQL语句是在新换的笔记工具Obsidian上编辑完复制到KingFusion低代码平台上的,导致了这个莫名奇妙的错误,看来以后代码可以复制到Obsidian上备份,但最好不在其中编辑,避免出现类似问题。
