SQL系列1:AI排查SQL语句中的幽灵

今天在开发过程中遇到一个奇怪的问题,两个一模一样的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;

快速验证方法(你自己就能测)

  1. 把报错那条 SQL 里 LIKE 前面的所有空格删掉
  2. 重新敲一个普通空格
  3. 再执行 → 立刻正常!

最终总结

两条 SQL 逻辑完全一样,唯一差别:空格字符不同!

删掉重输空格就解决了。

这几个SQL语句是在新换的笔记工具Obsidian上编辑完复制到KingFusion低代码平台上的,导致了这个莫名奇妙的错误,看来以后代码可以复制到Obsidian上备份,但最好不在其中编辑,避免出现类似问题。

相关推荐
NiceCloud喜云1 小时前
Anthropic 发布 Project Glasswing:未公开模型 Mythos 已挖出 10000+ 漏洞,含 OpenBSD 27 年老 bug
android·java·数据库·c++·python·docker·bug
Cosolar1 小时前
Milvus向量数据库学习手册
数据库·学习·架构·milvus
这个DBA有点耶1 小时前
SQL语义执行:当数据库开始“理解”你的查询意图
数据库·sql·自然语言处理·创业创新·dba·程序员创富·改行学it
中基数联软件造价2 小时前
第三方软件造价评估服务如何助力政务信息化合规?辽宁新规提供政策依据
网络·数据库·政务
zt1985q2 小时前
本地部署开源向量数据库 Weaviate 并实现外部访问
运维·数据库·网络协议·开源
一只fish2 小时前
Oracle官方文档翻译《Database Concepts 26ai》第15章-逻辑存储结构
数据库·oracle
数据库小学妹2 小时前
ProxySQL选型实战:从手写读写分离到中间件的踩坑全记录
数据库·sql·中间件
许彰午2 小时前
开发转兼职DBA(六):换了个数据库,问题还是那些问题
数据库·dba
handler012 小时前
【MySQL】常用约束语法总结
linux·运维·数据库·笔记·mysql