आप 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
।