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

MySQL में REGEXP का उपयोग करके कॉमा-पृथक मानों से विशिष्ट मान के आधार पर रिकॉर्ड्स प्राप्त करना

MySQL REGEXP के साथ CSV कॉलम में मान खोजना

कॉमा-पृथक मान (CSV) कॉलम में विशिष्ट मान खोजने के लिए, REGEXP ऑपरेटर का उपयोग एक ऐसे पैटर्न के साथ करें जो पूर्ण मान सीमाओं से मिलान करता है, आंशिक मिलान से बचाता है।

उदाहरण: CSV में मान 90 वाली पंक्तियाँ ढूंढना

mysql> CREATE TABLE DemoTable1447 (
    -> Value VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.58 sec)

mysql> INSERT INTO DemoTable1447 VALUES
    -> ('19,58,90,56'), ('56,89,99,100'),
    -> ('75,76,65,90'), ('101,54,57,59');
Query OK, 4 rows affected (0.13 sec)

mysql> SELECT * FROM DemoTable1447;
+--------------+
| Value        |
+--------------+
| 19,58,90,56  |
| 56,89,99,100 |
| 75,76,65,90  |
| 101,54,57,59 |
+--------------+
4 rows in set (0.00 sec)

सटीक मिलान के लिए REGEXP पैटर्न

mysql> SELECT * FROM DemoTable1447
    -> WHERE Value REGEXP '(^|,)90($|,)';

परिणाम

+-------------+
| Value       |
+-------------+
| 19,58,90,56 |
| 75,76,65,90 |
+-------------+
2 rows in set (0.00 sec)

पैटर्न व्याख्या: '(^|,)90($|,)'

यह आंशिक मिलान को रोकता है

  • मिलान: "90", "10,90", "90,20", "10,90,20"
  • नहीं मिलान: "190", "901", "900" (क्योंकि सीमाएं मेल नहीं खातीं)

सामान्यीकृत पैटर्न फ़ंक्शन

-- किसी भी मान के लिए पुन: प्रयोज्य
SET @search_val = '90';
SELECT * FROM DemoTable1447
WHERE Value REGEXP CONCAT('(^|,)', @search_val, '($|,)');

बेहतर विकल्प: FIND_IN_SET()

SELECT * FROM DemoTable1447
WHERE FIND_IN_SET('90', Value) > 0;

नोट: FIND_IN_SET() CSV के लिए सरल और तेज़ है, लेकिन सटीक टोकन मिलान की आवश्यकता होती है (कोई स्थान नहीं)।

  1. - महीनों की एक श्रृंखला से रिकॉर्ड प्राप्त करने का MySQL क्वेरी?

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1795 ( Name varchar(20), DueDate date ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1795 values(John,2018-07-21); Query OK, 1 row affected (0.00 sec)

  1. - MySQL में ENUM कॉलम से केवल 'NO' मानों की गणना करें

    MySQL में ENUM कॉलम पर सशर्त गणना के लिए बूलियन अभिव्यक्ति का योग (SUM(condition)) उपयोग कर सकते हैं। MySQL में TRUE = 1 और FALSE = 0 होता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1829 ( Name VARCHAR(20), isTopper ENUM(YES,NO) ); डेटा डालें mysql> INSERT INTO DemoTable1829 VALUES(

  1. - MySQL में टेबल A की तुलना में टेबल B में नहीं होने पर टेबल C में डेटा डालें

    समाधान टेबल A और B पर LEFT JOIN का उपयोग करें, जहां B में मेल नहीं खाता वहां के रिकॉर्ड टेबल C में डालें। उदाहरण टेबल A (demo20): INSERT INTO demo20 VALUES (100,John), (101,Bob), (102,Mike), (103,Carol); टेबल B (demo21): INSERT INTO demo21 VALUES (100,Sam), (101,Adam), (133,Bob), (145,David); ट

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
भागअर्थ
(^|,)स्ट्रिंग की शुरुआत (^) या कॉमा (,) से मिलान
90सटीक मान "90" से मिलान
($|,)स्ट्रिंग के अंत ($) या कॉमा (,) से मिलान