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

Mysql में LIKE क्लॉज का विकल्प

prod_catg LIKE '1,%' --matches when 1 is the first category
OR prod_catg LIKE '%,1,%' --matches when 1 is somewhere in the middle
OR prod_catg LIKE '%,1' --matches 1 when is the last category

वैसे भी आपको श्रेणी तालिका और उत्पाद (मुख्य) तालिका पर इसका संदर्भ जोड़कर अपनी स्कीमा को दोबारा सुधारना बेहतर था

संपादित करें

इस समस्या का सामना करने का दूसरा तरीका REGEXP का उपयोग करना है जो एक छोटे WHERE . की ओर ले जाएगा खंड (यहां मैंने परीक्षण करने के लिए उपयोग किया है):

DECLARE @regexp VARCHAR(100);
SET @regexp = '^1,.*|.*,1$|.*,1,.*';

SELECT
    '1,11,15,51,22,31' REGEXP @regexp AS test1,
    '51,11,15,1,22,31' REGEXP @regexp AS test2,
    '11,15,51,22,31,1' REGEXP @regexp AS test3,
    '7,11,15,51,22,31' REGEXP @regexp AS test4,
    '51,11,15,7,22,31' REGEXP @regexp AS test5,
    '11,15,51,22,31,7' REGEXP @regexp AS test6;

यह आपके prod_catg . से मेल खाएगा रेगुलर एक्सप्रेशन के खिलाफ '^1,.*|.*,1$|.*,1,.*' रिटर्निग 1 (TRUE) अगर यह मेल खाता है, 0 (FALSE) अन्यथा।

तब आपका WHERE क्लॉज इस तरह दिखेगा:

WHERE prod_catg REGEXP '^1,.*|.*,1$|.*,1,.*'

रेगेक्सपी की व्याख्या:

^1,.* --matches 1 at the beginning of a string followed by a `,` and any other char
.*,1$ --matches 1 at the end of a string preceded by a `,` and any other char
.*,1,.* --matches 1 between two `,` which are sourrounded by any other chars
| --is the OR operator

मुझे यकीन है कि यह रेगेक्सपी अधिक कॉम्पैक्ट हो सकता है लेकिन मैं नियमित अभिव्यक्तियों के साथ उतना अच्छा नहीं हूं

स्पष्ट रूप से आप उस श्रेणी को बदल सकते हैं जिसे आप रेगुलर एक्सप्रेशन में खोज रहे हैं (1 को बदलने का प्रयास करें) 7 के साथ ऊपर के उदाहरण पर)



  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. लूप में php मेल () फ़ंक्शन का उपयोग करके +-200 ईमेल भेजना

  4. MySQL प्रतिकृति समस्या निवारण:भाग दो

  5. रूबी ऑन रेल्स धीमी है...?