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

MySQL LIKE with json_extract

MySQL का डिफ़ॉल्ट संयोजन latin1_swedish_ci है 8.0 से पहले और utf8mb4_0900_ai_ci 8.0 के बाद से . इसलिए गैर-बाइनरी स्ट्रिंग तुलनाएं सामान्य कॉलम में डिफ़ॉल्ट रूप से केस-असंवेदनशील होती हैं।

हालांकि, जैसा कि JSON प्रकार के लिए MySQL मैन्युअल में बताया गया है

इसलिए, आपका JSON मान utf8mb4_bin . में है कोलेशन और तुलना केस को असंवेदनशील बनाने के लिए आपको किसी भी ऑपरेंड में केस असंवेदनशील कॉलेशन लागू करना होगा।

उदा.

WHERE username COLLATE XXX LIKE '...'

जहां XXX एक utf8mb4 संयोजन होना चाहिए (जैसे utf8mb4_general_ci आपने उल्लेख किया है।)

या

WHERE username LIKE '...' COLLATE YYY

जहां YYY एक संयोजन होना चाहिए जो आपके कनेक्शन के वर्ण सेट से मेल खाता हो।

समानता तुलना के लिए, आपको JSON मान को अनकोट करें JSON_UNQUOTE() के साथ या अनकोटिंग एक्सट्रैक्शन ऑपरेटर ->>

उदा.

JSON_UNQUOTE(JSON_EXTRACT(payload, '$.username'))

या बस

payload->>'$.username'

JSON प्रकार और फ़ंक्शन सामान्य डेटा प्रकारों से भिन्न तरीके से कार्य करते हैं। ऐसा प्रतीत होता है कि आप इसके लिए नए हैं। इसलिए मेरा सुझाव है कि उत्पादन परिवेश में डालने से पहले मैनुअल को ध्यान से पढ़ें।



  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. मैसकल-कनेक्टर/जे . का उपयोग करके जावा को मैसकल से कनेक्ट करना

  4. स्थान और विशेष वर्णों वाले URL के लिए सर्वोत्तम अभ्यास

  5. ऑटो इंक्रीमेंट फ़ील्ड का उपयोग करके ट्रिगर डालने से पहले/बाद में