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

MySQL में चीनी कैरेक्टर का पता कैसे लगाएं?

SELECT COUNT(*)
    FROM tbl
    WHERE HEX(col) REGEXP '^(..)*(E[2-9F]|F0A)'

कॉलम col . में चीनी अक्षरों के साथ रिकॉर्ड की संख्या की गणना करेगा ।

समस्याएं:

  • मुझे यकीन नहीं है कि हेक्स की कौन सी श्रेणियां चीनी का प्रतिनिधित्व करती हैं।
  • परीक्षा हो सकती है कोरियाई और जापानी शामिल हैं। ("सीजेके")
  • MySQL में 4-बाइट चीनी अक्षरों की जरूरत है utf8mb4 utf8 . के बजाय ।

विस्तार

मुझे लगता है कि तालिका में कॉलम CHARACTER SET utf8 है . Utf8 एन्कोडिंग में, चीनी वर्ण हेक्स E2 और E9, या EF, या F0 के बीच एक बाइट से शुरू होते हैं। हेक्स ई से शुरू होने वाले 3 बाइट लंबे होंगे, लेकिन मैं लंबाई की जांच नहीं कर रहा हूं; F0 वाले 4 बाइट्स होंगे।

रेगेक्सपी ^(..)* . से शुरू होता है , जिसका अर्थ है "स्ट्रिंग की शुरुआत से (^ .) ), 0 या अधिक का पता लगाएं (* ) 2-वर्ण (.. ) मान। उसके बाद या तो E . होना चाहिए -कुछ या F0A . उसके बाद कुछ भी हो सकता है। ई-समथिंग, अधिक विशेष रूप से, E है इसके बाद 2,3,4,5,6,7,8,9, या F. में से कोई भी आता है।

यादृच्छिक रूप से चुना गया, मैंने देखा कि 3 हेक्स बाइट्स के रूप में एन्कोड करता है E88D89 , और 𠜎 4 हेक्स बाइट्स के रूप में एन्कोड करता है F0A09C8E

मैं किसी विशिष्ट भाषा के लिए स्ट्रिंग की जांच करने के बेहतर तरीके के बारे में नहीं जानता।

जैसा कि आपने पाया, REGEXP बल्कि धीमा हो सकता है।

यह रेगेक्सपी अति-मार सकता है, जिसमें कुछ गैर-चीनी पात्रों को पकड़ा जा सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक विरासत संरचना के आसपास संबंधों को डिजाइन करना

  2. MySQL पूर्णांक फ़ील्ड मिलान स्ट्रिंग के साथ क्या हो रहा है?

  3. तैनात सर्वर पर Grails डेटाबेस माइग्रेशन

  4. MySQL में उपयोगकर्ताओं और प्रमाणीकरण को कैसे प्रबंधित करें

  5. MySQL 5.7 . में max_connections