Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं MySQL में एशियाई-भाषा वर्णों वाले पाठ के लिए क्वेरी कैसे कर सकता हूं?

सिद्धांत रूप में आप ऐसा कर सकते हैं:

  1. उन यूनिकोड श्रेणियों का पता लगाएं जिनके लिए आप परीक्षण करना चाहते हैं।
  2. यूटीएफ -8 में प्रारंभ और अंत को मैन्युअल रूप से एन्कोड करें।
  3. एक 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'),']')

बस इसे आजमाया। एक जादू की तरह काम करता है। :)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android + MySQL com.mysql.jdbc.Driver का उपयोग कर

  2. mysql त्रुटि 2005 - अज्ञात MySQL सर्वर होस्ट 'लोकलहोस्ट' (11001)

  3. MySQL वर्कबेंच के साथ विदेशी कुंजी जोड़ते समय MySQL त्रुटि 1064

  4. MySQL त्रुटि 1045 (28000):उपयोगकर्ता 'बिल' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)

  5. MySQL तालिका से अद्वितीय बाधा छोड़ना