为什么看起来相同的 sql,却有一条查询不到数据

2022-07-15 10:50:30 +08:00
 jwh199588

看起来相同的两个 sql 语句,为什么第一条查询不到数据,有哪位大神知道原因

2221 次点击
所在节点    程序员
13 条回复
moen
2022-07-15 10:53:26 +08:00
字符串里掺杂了不可见字符吧
Saxton
2022-07-15 10:55:08 +08:00
找个在线统计文字的 把两条 SQL 复制进去对比一下
dongtingyue
2022-07-15 10:59:48 +08:00
试过调换两个 sql 语句测试么
xiangyuecn
2022-07-15 11:04:07 +08:00
#1 不出意外,应该是 \u202D 或 \u202C

/t/725189
xiangyuecn
2022-07-15 11:06:50 +08:00
另外 trim 函数 也是反人类的,有些语言能去掉,有些不能😂

归根结底,还是 输入框 /编辑器 反人类,好在 chrome 控制台还是比较良心的 这种字符一眼就能看出来
sgq1128
2022-07-15 11:12:45 +08:00
零宽字符了解下
ozipin
2022-07-15 11:27:54 +08:00
不可见字符+1 ,建议对查询不到的那条语句删除首尾字符手动补全试试
lookStupiToForce
2022-07-15 11:28:14 +08:00
混编这种不可见不可打印字符的人啥居心啊,是要害人还是怕人抢饭碗啊
bruce0
2022-07-15 11:33:57 +08:00
不可见字符+1 我上次遇到过一次, 就是 windows 下的 utf-8 文件会 自动加一个 BOM, 但是 linux 不会, 就会导致两个字符,肉眼看一模一样, 但是用字符比较就会出现差别, 最终找到原因是 windows 会自动加 BOM, 最后
```
bytes.TrimPrefix(s, []byte{255, 254})
```
去掉就好了
Mutoo
2022-07-15 11:34:52 +08:00
另一个可能是执行 sql 的环境不一致,例如其中一个 use 了另一个 database 。
bthulu
2022-07-15 14:44:48 +08:00
@bruce0 windows+bom 不是常识吗?
dcsuibian
2022-07-15 14:48:35 +08:00
遍历 codepoint 对比下。
我项目里都是用 utf8 without bom 的。
bruce0
2022-07-15 14:57:45 +08:00
@bthulu 以前年轻, 懂得少 😭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866350

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX