सिद्धांत रूप में आप ऐसा कर सकते हैं:
- उन यूनिकोड श्रेणियों का पता लगाएं जिनके लिए आप परीक्षण करना चाहते हैं।
- यूटीएफ -8 में प्रारंभ और अंत को मैन्युअल रूप से एन्कोड करें।
- एक REGEXP के लिए एक श्रेणी के रूप में प्रत्येक एन्कोडेड प्रारंभ और अंत के पहले बाइट का उपयोग करें।
मेरा मानना है कि सीजेके रेंज यूरो प्रतीक जैसी चीजों से काफी दूर है कि झूठी सकारात्मक और झूठी नकारात्मक कुछ या कुछ नहीं होगी।
संपादित करें: हमने अब सिद्धांत को व्यवहार में ला दिया है!
चरण 1: वर्ण श्रेणी चुनें। मेरा सुझाव है \u3000-\u9fff; परीक्षण करना आसान है, और हमें लगभग सही परिणाम देना चाहिए।
चरण 2: बाइट्स में एन्कोड करें। (विकिपीडिया utf-8 पेज)
हमारी चुनी हुई श्रेणी के लिए, utf-8 एन्कोडेड मान हमेशा 3 बाइट्स होंगे, जिनमें से पहला 1110xxxx है, जहां xxxx यूनिकोड मान का सबसे महत्वपूर्ण चार बिट है।
इस प्रकार, हम 11100011 से 11101001, या 0xe3 से 0xe9 की सीमा में बाइट्स बनाना चाहते हैं।
चरण 3: बहुत आसान (और अभी मेरे द्वारा खोजा गया) UNHEX फ़ंक्शन का उपयोग करके हमारा regexp बनाएं।
SELECT * FROM `mydata`
WHERE `words` REGEXP CONCAT('[',UNHEX('e3'),'-',UNHEX('e9'),']')
बस इसे आजमाया। एक जादू की तरह काम करता है। :)पी>