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

相关推荐
AI人工智能集结号9 分钟前
AI回答采集:基于PostgreSQL JSONB的原始数据存储与可追溯性方案
数据库·人工智能·postgresql
躺柒31 分钟前
读半导体简史08大型机
linux·服务器·c语言·数据库·unix·ibm
DFT计算杂谈39 分钟前
交错磁研究进展材料物性与交叉应用
数据库·人工智能·python·opencv·算法
IvorySQL1 小时前
PG 日报|查询优化器重大修复,支持更多复杂 SQL 优化
数据库·人工智能·postgresql·开源
写代码的强哥2 小时前
TiDB 和 OceanBase 对比:架构师视角下的企业选型实战指南
数据库·云原生·架构
金融小白数据分析之路3 小时前
绍兴市镇街echarts 制作
前端·数据库·echarts
桐薇全肯定4 小时前
MySQL学生成绩管理系统实战操作
java·数据库·sql
hellojike4 小时前
free-stockdb本地金融数据库核心设计
数据库·金融
井川廊咏4 小时前
初探性能优化——2个月到4小时的性能提升
jvm·数据库·性能优化
这个DBA有点耶4 小时前
热点行更新:秒杀场景下一条UPDATE语句的锁等待与性能优化
数据库·sql·mysql·性能优化·database·dba