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

INSTR(str,substr) तब काम नहीं करता जब str में 'é' या 'ë' हो और सबस्ट्र केवल 'e' हो

यह LOCATE() पर बग 70767 की वजह से है और INSTR() , जिसे सत्यापित कर दिया गया है।

हालांकि INSTR() प्रलेखन में कहा गया है कि इसका उपयोग मल्टी-बाइट स्ट्रिंग्स के लिए किया जा सकता है, यह काम नहीं करता है, जैसा कि आप ध्यान दें, utf8_general_ci जैसे कोलाज के साथ , जो केस और एक्सेंट असंवेदनशील होना चाहिए

बग रिपोर्ट में कहा गया है कि यद्यपि MySQL इसे सही ढंग से करता है, यह केवल तभी करता है जब बाइट्स . की संख्या भी समान है:

रिपोर्ट उदाहरण को विकृत करने के लिए, यदि आप निम्न तालिका बनाते हैं:

create table t ( needle varchar(10), haystack varchar(10)
                  ) COLLATE=utf8_general_ci;
insert into t values ("A", "a"), ("A", "XaX");
insert into t values ("A", "á"), ("A", "XáX");
insert into t values ("Á", "a"), ("Á", "XaX");
insert into t values ("Å", "á"), ("Å", "XáX");

फिर इस क्वेरी को चलाएँ, आप उसी व्यवहार को प्रदर्शित होते हुए देख सकते हैं:

select needle
     , haystack
     , needle=haystack as `=`
     , haystack LIKE CONCAT('%',needle,'%') as `like`
     , instr(needle, haystack) as `instr`
  from t;

SQL Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीएचपी - पेजिनेशन के साथ MySQL क्वेरी

  2. MySQL अपडेट केस मदद

  3. तालिका लिखने के लिए SQL कथन?

  4. MySQL इकाई फ्रेमवर्क 4.0 संग्रहित प्रक्रिया फ़ील्ड मैपिंग

  5. CSV संग्रहण इंजन का उपयोग करके सीधे CSV फ़ाइल से mysql तालिका बनाएं?