आप utf8mb4_unicode_ci . का उपयोग करते हैं आपके कॉलम के लिए, इसलिए चेक केस असंवेदनशील है। अगर आप utf8mb4_bin का उपयोग करते हैं इसके बजाय, इमोजी 🌮 और 🌶 को अलग-अलग अक्षरों के रूप में सही ढंग से पहचाना जाता है।
WEIGHT_STRING के साथ
आप इनपुट स्ट्रिंग के लिए छँटाई और तुलना के लिए उपयोग किए जाने वाले मान प्राप्त कर सकते हैं।
अगर आप लिखते हैं:
SELECT
WEIGHT_STRING ('🌮' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('🌶' COLLATE 'utf8mb4_unicode_ci')
तब आप देख सकते हैं कि दोनों 0xfffd . हैं . यूनिकोड कैरेक्टर सेट
में वे कहते हैं:
अगर आप लिखते हैं:
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_bin'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_bin')
आपको उनका यूनिकोड मान मिलेगा 0x01f32e और 0x01f336 इसके बजाय।
अन्य अक्षरों जैसे Ä . के लिए , Á और A यदि आप utf8mb4_unicode_ci . का उपयोग करते हैं तो यह समान हैं , अंतर इसमें देखा जा सकता है:
SELECT
WEIGHT_STRING ('Ä' COLLATE 'utf8mb4_unicode_ci'),
WEIGHT_STRING ('A' COLLATE 'utf8mb4_unicode_ci')
वे वजन के लिए मैप करते हैं 0x0E33
Ä: 00C4 ; [.0E33.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM
A: 0041 ; [.0E33.0020.0008.0041] # LATIN CAPITAL LETTER A
इसके अनुसार:MariaDB/MySQL में utf8mb4_unicode_ci और utf8mb4_unicode_520_ci कोलाजेशन के बीच अंतर?
utf8mb4_unicode_ci . के लिए उपयोग किए जाने वाले वज़न UCA 4.0.0
पर आधारित हैं क्योंकि इमोजी वहां दिखाई नहीं देते, मैप किया गया वज़न 0xfffd . है
यदि आपको इमोजी के साथ-साथ नियमित अक्षरों के लिए केस असंवेदनशील तुलना और सॉर्ट की आवश्यकता है तो यह समस्या utf8mb4_unicode_520_ci का उपयोग करके हल की जाती है :
SELECT
WEIGHT_STRING('🌮' COLLATE 'utf8mb4_unicode_520_ci'),
WEIGHT_STRING('🌶' COLLATE 'utf8mb4_unicode_520_ci')
उन इमोजी के लिए अलग वज़न भी मिलेगा 0xfbc3f32e और 0xfbc3f336 ।