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

MySQL में REGEXP से पाइप-सीमित कॉलम में मान ढूंढें

MySQL में REGEXP ऑपरेटर का उपयोग करके पाइप (|) से अलग किए गए मानों वाले कॉलम में विशिष्ट मान खोज सकते हैं।

समस्या

कॉलम में '8|56|78|45' जैसा डेटा है। साधारण LIKE '%8%' से 8, 58, 80, 98 आदि सभी मिलेंगे। सटीक मिलान के लिए रेगुलर एक्सप्रेशन चाहिए।

समाधान: शब्द सीमा पैटर्न

WHERE कॉलम REGEXP '[[:<:]]8[[:>:]]'
-- या पाइप के लिए विशेष पैटर्न
WHERE कॉलम REGEXP '\\|8\\|'

उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable (
    -> Value VARCHAR(60)
    -> );

2. डेटा डालें

mysql> INSERT INTO DemoTable VALUES('8|56|78|45');
mysql> INSERT INTO DemoTable VALUES('9876');
mysql> INSERT INTO DemoTable VALUES('98|8');
mysql> INSERT INTO DemoTable VALUES('3|8|9');
mysql> INSERT INTO DemoTable VALUES('97|94');
mysql> INSERT INTO DemoTable VALUES('103|104|110|8|97');

4. पैटर्न '\\|8\\|' से खोजें (पाइप के बीच 8)

mysql> SELECT * FROM DemoTable WHERE Value REGEXP '\\|8\\|';

5. परिणाम

+------------------+
| Value            |
+------------------+
| 3|8|9            |
| 103|104|110|8|97 |
+------------------+

पैटर्न समझाया

  • \\| - शाब्दिक पाइप वर्ण (एस्केप्ड)
  • 8 - खोजा जाने वाला मान
  • \\| - शाब्दिक पाइप वर्ण
  • यह सुनिश्चित करता है कि 8 पाइप के बीच में है

किनारे के मामले संभालें

-- शुरुआत में: '8|...' के लिए
WHERE Value REGEXP '^8\\|'

-- अंत में: '...|8' के लिए
WHERE Value REGEXP '\\|8$'

-- अकेला मान: '8' के लिए
WHERE Value = '8'

-- संयुक्त: किसी भी स्थिति में 8
WHERE Value REGEXP '(^|\\|)8(\\||$)'

बेहतर विकल्प

सामान्यीकृत डिज़ाइन (अलग टेबल में पंक्तियां) क्वेरी प्रदर्शन और अखंडता के लिए बेहतर है।

  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में MATCH और AGAINST से विशिष्ट कॉलम में स्ट्रिंग खोजें

    MySQL का Full-Text Search फीचर MATCH() ... AGAINST() का उपयोग करके टेक्स्ट कॉलम में कुशलता से खोज करने की अनुमति देता है। यह `LIKE %term%` से बहुत तेज़ है। टेबल बनाएं और फुलटेक्स्ट इंडेक्स जोड़ें mysql> CREATE TABLE DemoTable1833 ( Name VARCHAR(20) ); mysql> ALTER TABLE DemoTable1833 ADD

  1. - उदाहरणों के साथ MySQL AUTO_INCREMENT

    आइए समझते हैं कि AUTO_INCREMENT कैसे काम करता है: AUTO_INCREMENT विशेषता का उपयोग नई रो के लिए एक अद्वितीय पहचानकर्ता उत्पन्न करने के लिए किया जाता है। आइए देखें कि यह स्टेटमेंट कैसे काम करता है। उससे पहले, नीचे दी गई क्वेरी पर विचार करें: क्वेरी CREATE TABLE tableName ( id MEDIUMINT NOT NULL