mysql怎麼搜emoji?

來源:互聯網
上載者:User
mysql支援utf8mb4字元集,即已支援emojiEmoji的儲存。
現在想用emoji作為where的一個條件進行select,是否有可能實現?怎麼實現呢?


回複討論(解決方案)

只要你能在編輯器中打出來,查詢和其他字元沒什麼區別

我用chrome +phpmyadmin中用mysql搜:
select * from `table` where `nickname` like convert(_utf8 '%

鬱悶,發個emoji居然被截了,改用論壇支援的emoji湊合吧。

我用chrome +phpmyadmin中用mysql搜:
select * from `table` where `nickname` like convert(_utf8 '%%' USING utf8mb4) COLLATE utf8mb4_general_ci
結果為空白。但是可以肯定有一條記錄的nickname內含有這個emoji。

我手邊的裝置都不支援 emoji,無法給出準確的運算式
但原理應該是這樣的:
如果你的欄位是 utf8mb4_general_ci 的,那麼欄位中的 emoji 就是以 4 位元組的 utf-8 存在的
如果你能輸入 emoji 到字串,那麼查詢語句就是
select * from `table` where `nickname` like '%$txt%'

如果你想指定某個 emoji,而你又無法輸入的話,可以用十六進位內碼錶示。比如
$ch = "\xf0\x9f\x98\x84";
$ch = "\xf0\x9f\x98\x83";

如果沒有 emoji 對照表,那麼寫個小程式用支援 emoji 的裝置探測一下就知道了

chrome裝了個擴充可以輸入emoji,對照表我也有。
我也試過用select * from `table` where `nickname` like '%\xf0%' ; 結果也是為空白。這一點還是沒想明白為啥。
比較奇怪的一點就是:phpmyadmin上看4位元組的emoji是問號,3位元組的能正常顯示。而直接讀庫取出來echo的話是能正常顯示的,證明mysql已經支援4位元組的emoji了。那麼看到問號只是因為phpmyadmin的緣故?

phpmyadmin上看4位元組的emoji是問號這是正常的
雖然你的欄位是 utf8mb4 但 phpmaiadmin 是 utf-8 的,編碼轉不過來自然就是問號了

你 nickname like '%\xf0%' 是不行的,因為文本方式下是按字尋找的 \xf0 不會單獨存在
要聲明 nickname 是二進位的才行
BINARY nickname like '%\xf0%'

select * from `table` where BINARY `nickname` like '%\xf0%' ;
也為空白哦。。。

select * from `table` where BINARY `nickname` like '%整個emoji%' ;
這樣就可以了,感謝老xu的熱心幫忙

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.