संयोजन . आपके पास दो विकल्प हैं, तीन नहीं:
utf8_bin
इन सभी को भिन्न . के रूप में मानता है :demandé
और demandé
और Demandé
।
utf8_..._ci
(आमतौर पर utf8_general_ci
या utf8_unicode_ci
) इन सभी को समान . के रूप में मानता है :demandé
और demandé
और Demandé
।
यदि आप केवल केस संवेदनशीलता चाहते हैं (demandé
=demandé
, लेकिन दोनों में से कोई भी Demandé
. से मेल नहीं खाता ), आप भाग्य से बाहर हैं।
यदि आप केवल उच्चारण संवेदनशीलता चाहते हैं (demandé
=Demandé
, लेकिन न तो मेल खाते हैं demandé
), आप भाग्य से बाहर हैं।
घोषणा . आप जो कुछ भी चुनते हैं उसे करने का सबसे अच्छा तरीका:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
फ्लाई पर कॉलेशन न बदलें . यह इंडेक्स का उपयोग नहीं करेगा (अर्थात, धीमा होगा) यदि कोलेशन name
में भिन्न है :
WHERE name = ... COLLATE ...
बाइनरी . डेटाटाइप BINARY
, VARBINARY
और BLOB
बहुत पसंद हैं CHAR
, VARCHAR
, और TEXT
COLLATE ..._bin
. के साथ . शायद अंतर केवल इतना है कि टेक्स्ट को VARCHAR ... COLLATE ..._bin
में वैध utf8 स्टोर करने के लिए चेक किया जाएगा। , लेकिन VARBINARY...
. में संग्रहीत करते समय इसकी जांच नहीं की जाएगी . तुलना (WHERE
, ORDER BY
, आदि) वही होगा; यानी, बस बिट्स की तुलना करें, केस फोल्डिंग या एक्सेंट स्ट्रिपिंग आदि न करें।