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

相关推荐
快乐的木子李23 分钟前
mysql-26.7.0-linux26.7.0下载安装
数据库·mysql
excel1 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
知行产研2 小时前
易控智驾:毛利率跃升17.2个百分点,矿山无人驾驶从“规模换增长“迈入“盈利拐点“
数据库·mysql
千里码aicood2 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
饺子大魔王的男人2 小时前
Redis 内存和连接异常怎么排查?用 redis_exporter 搭一套可远程抓取的监控链路
数据库·redis·bootstrap
可涵不会debug2 小时前
第一次学 LangGraph:用一个快递案例搞懂 State、Node、Edge 和 compile
服务器·数据库·mysql
IvorySQL3 小时前
PostgreSQL 日报 |RLS 机密性绕过漏洞(9 月 27 日)
数据库·postgresql
夕除3 小时前
redis--RDB AOF
数据库·redis·缓存
用户250458106094 小时前
数据库索引为什么会失效?从执行计划理解 SQL 性能优化
sql·mysql
数据工匠老o4 小时前
"能用应用层解决的不用存储过程",十年数据库经验总结
数据库·架构