作者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://www.ptt.cc/bbs/PHP/M.1473522044.A.4FC.html
※ 編輯: GALINE (114.27.81.194), 09/10/2016 23:46:12
推 lovejoe7010: 大大太專業了!!非常感謝您的指導 09/11 02:41
推 yiefaung: 歡樂給推 09/12 02:46