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上备份,但最好不在其中编辑,避免出现类似问题。

相关推荐
这个DBA有点耶6 小时前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
SelectDB7 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB7 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB7 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
ProcessOn8 小时前
纯干货!MySql实战02:一条SQL更新语句执行流程大探索!
sql·mysql·sql server
这个DBA有点耶9 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
ly768912 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!13 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网13 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析