作者GALINE (天真可爱CQD)
看板PHP
标题Re: [请益] mysql空百=?
时间Sat Sep 10 23:40:40 2016
※ 引述《lovejoe7010 (shen)》之铭言:
: "这是 一串文字"
: ^这是空格
: 如果我sql select 用 test like '%这是 一串文字%'
: 或是用 test="这是 一串文字"
: 都搜寻不到!!!
: 用去空白还是取代字串都无法移除这空白
: TRIM(test) , REPLACE(test, ' ', '' )
: 栏位型态是
: varchar(60) character set utf8 collate utf8_bin default NULL
: 但如果我用test like '%这是%'就可以搜寻到....
上面推文有写到,那个你以为是空白的东西不是 space 字元
实际上是什麽,可能性满多的
- aaa[\v]bbb // 垂直 tab,神秘历史遗迹!#!$!%$!#
- aaa[\b]bbb // 倒退字元...对,backspace 也可以是一个字元
- aaa[烂掉的表情符号]bbb
- aaa[其他鬼东西]bbb
所以你用 aaa[space]bbb 去搜寻是搜不到东西的
要知道实际上是什麽,你要把 binary 印出来才知道
我的习惯是会先存成文字档之後用 xxd 来看
如果你完全没概念怎麽肉眼看 binary,那就放弃它吧,直接人力 update 掉他...
然後
- trim 是切掉左右两边的空白,中间的空白是切不掉的
- 更何况那不是空白 _(:з」∠)_
- 把 '[space]' replace 成 '[空字串]' 没有用,因为他不是 space
- mysql 的 utf8 没办法存大部分的表情符号,请想办法改成 utf8mb4
- 不过已经存烂掉的请当成救不回来 _(:з」∠)_
--
延伸阅读
ASCII 编码
https://zh.wikipedia.org/wiki/ASCII
UTF8 编码规则
https://zh.wikipedia.org/wiki/UTF-8
查 UTF-8 编码的工具
http://www.fileformat.info/info/charset/UTF-8/index.htm
xxd 指令一下没找到简单易懂的说明,反正就这样用
$ xxd yourfile.txt
--
Sent from my little pony
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.27.81.194
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1473522044.A.4FC.html
※ 编辑: GALINE (114.27.81.194), 09/10/2016 23:46:12
1F:推 lovejoe7010: 大大太专业了!!非常感谢您的指导 09/11 02:41
2F:推 yiefaung: 欢乐给推 09/12 02:46