Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में डॉट वाले स्ट्रिंग्स के लिए LIKE के बजाय REGEXP का उपयोग

MySQL में डॉट (.) वाले स्ट्रिंग्स (जैसे संस्करण संख्या) में पैटर्न मिलान के लिए LIKE विश्वसनीय नहीं है क्योंकि डॉट वाइल्डकार्ड के रूप में कार्य करता है। इसके बजाय REGEXP का उपयोग करें।

समस्या

LIKE '19.%' में डॉट किसी भी वर्ण से मेल खाता है, केवल शाब्दिक डॉट से नहीं।

समाधान: REGEXP

SELECT * FROM table_name 
WHERE column_name REGEXP '^19\\.[0-9]+$';

उदाहरण

तालिका बनाएं और संस्करण डेटा डालें:

mysql> CREATE TABLE DemoTable (GameReleaseVersion VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES ('19.6'), ('18.4'), ('17.6'), ('19.5');

डेटा

+--------------------+
| GameReleaseVersion |
+--------------------+
| 19.6               |
| 18.4               |
| 17.6               |
| 19.5               |
+--------------------+

REGEXP क्वेरी: 19 से शुरू होने वाले संस्करण

mysql> SELECT * FROM DemoTable
    -> WHERE GameReleaseVersion REGEXP '^19\\.[0-9]+$';

परिणाम

+--------------------+
| GameReleaseVersion |
+--------------------+
| 19.6               |
| 19.5               |
+--------------------+

REGEXP पैटर्न व्याख्या

पैटर्नअर्थ
^स्ट्रिंग की शुरुआत
19शाब्दिक '19'
\\.शाब्दिक डॉट (एस्केप किया गया)
[0-9]+एक या अधिक अंक
$स्ट्रिंग का अंत

अन्य उपयोगी पैटर्न

  • '^[0-9]+\\.[0-9]+\\.[0-9]+$' - सेमेंटिक वर्जनिंग (1.2.3)
  • '^[0-9]+(\\.[0-9]+)*$' - एक या अधिक डॉट-अंक समूह
  • '^v?[0-9]+\\.[0-9]+$' - वैकल्पिक 'v' प्रीफिक्स के साथ

नोट: MySQL 8.0+ में REGEXP_LIKE() फ़ंक्शन भी उपलब्ध है।

  1. - MySQL में कॉमा-सेपरेटेड मान वाले कॉलम में विशिष्ट संख्या खोजकर रिकॉर्ड चुनें

    CONCAT() + LIKE कॉमा सेपरेटेड स्ट्रिंग में सटीक संख्या मिलान के लिए: select * from yourTableName where concat(,, yourColumnName, ,) like %,yourValue,%; उदाहरण insert into demo49 values(4,5,6,Adam), (5,3,2,Mike), (3,4,9,Bob); संख्या 4 खोजना select * from demo49 where concat(,, id, ,) like %,4,%;

  1. - MySQL REGEXP: विशिष्ट संख्या से शुरू होने वाले स्ट्रिंग+नंबर रिकॉर्ड प्राप्त करें

    REGEXP पैटर्न Select yourColumnName1, yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue]; उदाहरण: John से शुरू और फिर 5 या 6 insert into demo45(value) values(John500), (John1500), (John5500), (John6500), (John8600); क्वेरी: ^John[56] select id,val

  1. - MySQL में FIND_IN_SET() से कॉमा-सेपरेटेड कॉलम में विशिष्ट संख्या वाले रिकॉर्ड चुनें

    FIND_IN_SET() फ़ंक्शन FIND_IN_SET(str, strlist) कॉमा-सेपरेटेड सूची में स्ट्रिंग की स्थिति लौटाता है (1-आधारित); नहीं मिलने पर 0। उदाहरण insert into demo73 values(100,101,103,105,SSC), (105,103,1005,1003,104,Computer), (110,105,104,111,Novel); संख्या 103 खोजना 0; +-----------------------+-------