国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇

這篇具有很好參考價(jià)值的文章主要介紹了MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、問(wèn)題出現(xiàn)

? ? 在APP客戶端輸入搜索文章的關(guān)鍵字時(shí),不小心輸入來(lái)了一個(gè) emoji 表情符號(hào),提示出錯(cuò)了,在后臺(tái)查詢錯(cuò)誤日志信息,提示查詢出現(xiàn)了2條相同的記錄:

Caused by: org.hibernate.NonUniqueResultException: query did not return a unique result: 2

2、業(yè)務(wù)邏輯

? ? 數(shù)據(jù)庫(kù)有個(gè) tb_search_statistic 表格用來(lái)記錄用戶的搜索記錄。每次客戶端發(fā)起搜索,后臺(tái)業(yè)務(wù)先查詢下之前是否已經(jīng)存在該「關(guān)鍵字」的搜索記錄,如果沒(méi)有就插入一條新數(shù)據(jù),如果已經(jīng)存在就對(duì)其搜索次數(shù)增加 1; 在執(zhí)行查詢操作時(shí),因?yàn)榉祷亓藘蓷l記錄所以報(bào)錯(cuò)了。

3、在Nacat for MySQL 進(jìn)行問(wèn)題重現(xiàn)

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇,數(shù)據(jù)庫(kù),mysql,數(shù)據(jù)庫(kù)

? ? 果然,出現(xiàn)了兩條記錄,是不是很奇怪,明明兩個(gè)表情符號(hào)是完全不同的。其實(shí)這條查詢語(yǔ)句里面有個(gè)字符 “=” ,這個(gè)等號(hào)和 MySQL 的字符集和字符序有關(guān)系。

? ? MySQL 里存儲(chǔ)的數(shù)據(jù),只要是字符類型的字段,都會(huì)對(duì)應(yīng)一個(gè)字符集(字符集合+編碼)和字符序(字符的排序和比較),每個(gè)字符集對(duì)應(yīng)一個(gè)或多個(gè)字符序,且對(duì)應(yīng)一個(gè)默認(rèn)的字符序,在數(shù)據(jù)表里新建字段時(shí),這個(gè)字符集和字符序就確定下來(lái)了,如果不專門指定,就繼承自表格的字符集和字符序(繼承關(guān)系:服務(wù)器 <-?數(shù)據(jù)庫(kù) <- 表 <- 字段)。

? ? 在 Navicat 客戶端看下表格的字符集和字符序:

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇,數(shù)據(jù)庫(kù),mysql,數(shù)據(jù)庫(kù)

? ? 可以發(fā)現(xiàn),表格的字符集是 utf8mb4, 字符序是默認(rèn)的?utf8mb4_general_ci。因?yàn)?keyword 字段沒(méi)有專門指定,就繼承了與表格相同的字符集和字符序。

? ? 問(wèn)題的關(guān)鍵就出在這里:utf8mb4_general_ci 無(wú)法精確區(qū)分不同的 emoji 表情符號(hào),所以導(dǎo)致查詢結(jié)果出現(xiàn)多條記錄。剛才提到一個(gè)字符序可以對(duì)應(yīng)多個(gè)字符序。下面是 utf8mb4 對(duì)應(yīng)的的兩個(gè)字符序的比較:

  • utf8mb4_bin:將字符串每個(gè)字符用二進(jìn)制數(shù)據(jù)編譯存儲(chǔ),區(qū)分大小寫,而且可以存二進(jìn)制的內(nèi)容。
  • utf8mb4_general_ci:ci 即 case insensitive,不區(qū)分大小寫。沒(méi)有實(shí)現(xiàn) Unicode 排序規(guī)則,在遇到某些特殊語(yǔ)言或者字符集,排序結(jié)果可能不一致。但是,在絕大多數(shù)情況下,這些特殊字符的順序并不需要那么精確。
    ?

4、解決方案

? ? 方案一:將字段的字符序修改為 utf8mb4_bin.?

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇,數(shù)據(jù)庫(kù),mysql,數(shù)據(jù)庫(kù)

? ? ?修改后,再次執(zhí)行查詢語(yǔ)句,結(jié)果就正好是我們期望的這條數(shù)據(jù)了:

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇,數(shù)據(jù)庫(kù),mysql,數(shù)據(jù)庫(kù)

?

? ? 方案二:在where查詢字段添加 binary 關(guān)鍵字,BINARY 不是函數(shù),是類型轉(zhuǎn)換運(yùn)算符,它用來(lái)強(qiáng)制它后面的字符串為一個(gè)二進(jìn)制字符串。

MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇,數(shù)據(jù)庫(kù),mysql,數(shù)據(jù)庫(kù)

? ? 以上出現(xiàn)了一些關(guān)于字符集和字符序的術(shù)語(yǔ),其實(shí) MySQL 的一些莫名其妙的錯(cuò)誤包括“亂碼”都和它們密切相關(guān)。?所以有必要對(duì)它們有清晰的了解,如果感興趣,可以參考筆者另外一篇文章:

MySQL 字符集概念、原理及配置之圖文詳解文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-669309.html

到了這里,關(guān)于MySQL 條件查詢 Emoji 表情符號(hào)卻返回多條數(shù)據(jù)【包含其它表情符號(hào)】的問(wèn)題解決 - COLLATION 字符序的選擇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL 04-EMOJI 表情與 UTF8MB4 的故事

    MySQL View MySQL truncate table 與 delete 清空表的區(qū)別和坑 MySQL Ruler mysql 日常開(kāi)發(fā)規(guī)范 MySQL datetime timestamp 以及如何自動(dòng)更新,如何實(shí)現(xiàn)范圍查詢 MySQL 06 mysql 如何實(shí)現(xiàn)類似 oracle 的 merge into MySQL 05 MySQL入門教程(MySQL tutorial book) MySQL 04- EMOJI 表情與 UTF8MB4 的故事 MySQL Expression 1 of ORDE

    2024年04月12日
    瀏覽(18)
  • MySQL如何存儲(chǔ)表情符號(hào)?

    默認(rèn)mysql的字符集是utf8,排序規(guī)則為 utf8_general_ci 在存儲(chǔ)表情的時(shí)候會(huì)報(bào) 1366 - Incorrect string value: \\\'xF0x9Fx98x84\\\' for column \\\'name\\\' at row 1, Time: 0.007000s 這時(shí)需要修改字符集 這時(shí)就可以了 utf8和utf8mb4的區(qū)別 MySQL中的utf8其實(shí)是utf8mb3,最多只用3個(gè)字節(jié)存儲(chǔ)字符,存儲(chǔ)不了表情。如果要

    2024年02月02日
    瀏覽(16)
  • HTML常用表情Emoji?♂?和Emoji參考手冊(cè)

    HTML常用表情Emoji?♂?和Emoji參考手冊(cè)

    HTML表情可以用來(lái)在網(wǎng)頁(yè)中插入各種表情符號(hào)圖標(biāo),豐富了網(wǎng)頁(yè)表現(xiàn)形式和視覺(jué)效果。下面是一些常用HTML表情代碼大全?? ??????????????????????????????????? ???????♂?????????????????????????????????????????????????????????

    2024年02月13日
    瀏覽(22)
  • MySQL數(shù)據(jù)庫(kù)——MySQL WHERE:條件查詢數(shù)據(jù)

    在 MySQL 中,如果需要有條件的從數(shù)據(jù)表中查詢數(shù)據(jù),可以使用?WHERE?來(lái)指定查詢條件。 使用 WHERE 的語(yǔ)法格式如下: WHERE 查詢條件 查詢條件可以是: 帶比較運(yùn)算符和邏輯運(yùn)算符的查詢條件 帶 BETWEEN AND 的查詢條件 帶 IS NULL 的查詢條件 帶 IN

    2024年02月03日
    瀏覽(29)
  • 數(shù)據(jù)庫(kù)基礎(chǔ)之 - MySQL條件查詢

    數(shù)據(jù)庫(kù)基礎(chǔ)之 - MySQL條件查詢

    從今天開(kāi)始,本系列內(nèi)容就帶各位小伙伴學(xué)習(xí)數(shù)據(jù)庫(kù)技術(shù)。 數(shù)據(jù)庫(kù)技術(shù)是Java開(kāi)發(fā)中必不可少的一部分知識(shí)內(nèi)容。也是非常重要的技術(shù)。本系列教程由淺入深, 全面講解數(shù)據(jù)庫(kù)體系。 非常適合零基礎(chǔ)的小伙伴來(lái)學(xué)習(xí)。 全文大約【 1263】 字,不說(shuō)廢話,只講可以讓你學(xué)到技術(shù)、

    2024年02月06日
    瀏覽(20)
  • Unity UGUI TextMeshPro實(shí)現(xiàn)輸入中文和表情包(Emoji)表情

    Unity UGUI TextMeshPro實(shí)現(xiàn)輸入中文和表情包(Emoji)表情

    目錄 實(shí)現(xiàn)中文顯示 準(zhǔn)備工作 1、打開(kāi)Window——TextMeshPro——FontAssetCreator 2、把字體文件放入SourceFont中 3、把CharacterSet改為Characters from File 4、把字體庫(kù)文件放入Characters File 5、設(shè)置好參數(shù)點(diǎn)擊Generate Font Atlas等待完成后保存 6、把生成后保存的字體文件退拽到Font Asset即可 效果演

    2024年01月18日
    瀏覽(24)
  • mysql數(shù)據(jù)庫(kù)表的多條件查詢

    mysql數(shù)據(jù)庫(kù)表的多條件查詢

    select可以返回多條數(shù)據(jù)也可以返回一條數(shù)據(jù) 如果要查詢所有的字段可以用 *****代替 where后面跟的是篩選條件(可選) N 是返回的數(shù)據(jù)條數(shù)(可選) M 是數(shù)據(jù)的偏移量(可選) 例如:在職位招聘表中獲取在長(zhǎng)沙雨花區(qū)的前10條信息 通用語(yǔ)法 : 詢語(yǔ)句中你可以使用一個(gè)或者多個(gè)

    2024年02月11日
    瀏覽(43)
  • Unity中使用TextMeshPro打出Emoji表情

    Unity中使用TextMeshPro打出Emoji表情

    最近遇到一個(gè)需求,在聊天框中支持用戶的Emoji輸入,查了半天資料沒(méi)有一個(gè)能說(shuō)清楚的,于是自己研究琢磨了下。 最終效果 最終效果可以在APP輸入框中使用系統(tǒng)的輸入法輸入emoji表情并顯示,如下 1.1 準(zhǔn)備好emoji素材 找到emoji圖片,注意需要是 unicode.png 格式命名的。github上

    2024年01月18日
    瀏覽(36)
  • ChatGPT實(shí)現(xiàn)markdown 格式與 emoji 表情

    ChatGPT實(shí)現(xiàn)markdown 格式與 emoji 表情

    書寫文章時(shí),巧妙的使用一些小圖標(biāo),可以給文章增加不少的靈動(dòng)感,讀者也會(huì)感覺(jué)更加輕松。恰當(dāng)?shù)膱D標(biāo)也能增進(jìn)讀者對(duì)內(nèi)容的理解。ChatGPT 目前不能直接聯(lián)網(wǎng),但可以使用 emoji 表情文字來(lái)達(dá)到類似的效果。我們?cè)诓簧?GitHub 的項(xiàng)目介紹和個(gè)人介紹頁(yè)面上,都可以看到在列

    2024年02月07日
    瀏覽(27)
  • iOS開(kāi)發(fā)-聊天emoji表情與自定義動(dòng)圖表情左右滑動(dòng)控件

    iOS開(kāi)發(fā)-聊天emoji表情與自定義動(dòng)圖表情左右滑動(dòng)控件

    iOS開(kāi)發(fā)-聊天emoji表情與自定義動(dòng)圖表情左右滑動(dòng)控件 之前開(kāi)發(fā)中遇到需要實(shí)現(xiàn)聊天emoji表情與自定義動(dòng)圖表情左右滑動(dòng)控件。使用UICollectionView實(shí)現(xiàn)。 UICollectionView是一種類似于UITableView但又比UITableView功能更強(qiáng)大、更靈活的視圖,這是源于它將UICollectionView對(duì)cell的布局交給了

    2024年02月15日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包