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

MySQL में चयन क्वेरी के अंदर LIKE के साथ स्विच करें

मैसकल केस के दो प्रकारों का समर्थन करता है, जिसे आप क्वेरी 2 में उपयोग करते हैं वह कम लचीला है लेकिन एक चर पर केवल समानता का समर्थन करता है। दूसरा संस्करण मामले के बाद कोई चर निर्दिष्ट नहीं करता है और फिर शर्तों को केवल समानता की आवश्यकता नहीं है:

select id_tag,
case  
   when tag LIKE "%class%" then "class" 
   when tag LIKE "%new%" then "new"
   when tag LIKE "%pack%" then "pack"
end as matching_tag 
from Tags 
where tag LIKE "%class%" OR tag LIKE "%new%" OR tag LIKE "%pack%"

देखें दस्तावेज़ीकरण अधिक जानकारी के लिए

संपादित करें:यहां कुछ और स्पष्टीकरण दिया गया है कि आपकी क्वेरी # 1 ने जो लौटाया वह वापस क्यों आया:

case tag
   when tag LIKE "%class%" then "class" 
   when tag LIKE "%new%" then "new"
   when tag LIKE "%pack%" then "pack"
end as matching_tag

when ... then . के बीच तुलना के लिए एक शाब्दिक मूल्य प्राप्त करने की अपेक्षा करता है उपरोक्त मामले में भाव tag LIKE "%class%" , tag LIKE "%new%" और tag LIKE "%pack%" वास्तविक मामले की तुलना से पहले सभी का मूल्यांकन किया जाता है। हालांकि (!), क्या होता है कि वे या तो 0 या 1 हो जाते हैं और जब टैग के मूल्य की तुलना में यह 0 का पहला मान होता है जो किसी भी चार से मेल खाएगा (चार को डाला जाएगा 0) - यह आपकी पहली क्वेरी के परिणामों के अनुरूप है।

यहां एक क्वेरी है जो प्रासंगिक अभिव्यक्तियों के लिए तार्किक मान दिखाती है:

select id_tag, tag LIKE "%class%", tag LIKE "%new%", tag = 0, case tag     when tag LIKE "%class%" then "class"     when tag LIKE "%new%" then "new"    when tag LIKE "%pack%" then "pack" end as matching_tag  from Tags  where tag LIKE "%class%" OR tag LIKE "%new%" OR tag LIKE "%pack%";

इसलिए आपको अप्रत्याशित परिणाम मिलते हैं; साइलेंट कास्ट यहां एक मानक नुकसान है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL कॉलम में सबसे अधिक बार आने वाला मान ज्ञात करें

  2. तालिका में नवीनतम रिकॉर्ड चुनें (डेटाटाइम फ़ील्ड)

  3. mariadb Regexp कभी-कभी संग्रहीत प्रक्रिया में खाली हो जाता है

  4. एसक्यूएल केस स्टेटमेंट

  5. इस SQL ​​​​कोड में तालिका में कैसे शामिल हों?