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

MySQL में RIGHT() और NOT IN से विशिष्ट अंतिम 3 अंक बाहर करना

RIGHT() और NOT IN के साथ बहिष्करण

कॉलम के अंतिम N वर्णों की जांच करके विशिष्ट सफिक्स वाले मानों को बाहर करने के लिए RIGHT() के साथ NOT IN का उपयोग करें।

उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना

mysql> CREATE TABLE DemoTable(Value INT);
Query OK, 0 rows affected (0.71 sec)

रिकॉर्ड्स इन्सर्ट करना

mysql> INSERT INTO DemoTable VALUES(1234),(2345),(7896),(4321);
Query OK, 4 rows affected (...)

सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable;
+-------+
| Value |
+-------+
| 1234  |
| 2345  |
| 7896  |
| 4321  |
+-------+
4 rows in set (0.00 sec)

अंतिम 3 अंक '234' और '321' नहीं वाले रिकॉर्ड्स

mysql> SELECT * FROM DemoTable WHERE RIGHT(Value, 3) NOT IN ('234', '321');

परिणाम

+-------+
| Value |
+-------+
| 2345  |
| 7896  |
+-------+
2 rows in set (0.00 sec)

तर्क समझना

ValueRIGHT(Value,3)NOT IN ('234','321')
1234'234'FALSE (बाहर)
2345'345'TRUE (शामिल)
7896'896'TRUE (शामिल)
4321'321'FALSE (बाहर)

संख्यात्मक कॉलम के लिए कास्टिंग

-- INT/BIGINT कॉलम के लिए
WHERE RIGHT(CAST(Value AS CHAR), 3) NOT IN ('234', '321')

-- या मॉड्यूलो (अंतिम 3 अंक)
WHERE Value % 1000 NOT IN (234, 321)

स्ट्रिंग कॉलम के लिए

WHERE RIGHT(PhoneNumber, 3) NOT IN ('000', '111', '999')

NOT IN vs NOT EXISTS

सबक्वेरी के साथ:

-- NOT IN (NULL होने पर सावधानी)
WHERE RIGHT(Value, 3) NOT IN (SELECT Suffix FROM ExcludedSuffixes)

-- NOT EXISTS (सुरक्षित, NULL-प्रूफ)
WHERE NOT EXISTS (
    SELECT 1 FROM ExcludedSuffixes e 
    WHERE e.Suffix = RIGHT(Value, 3)
)

नियमित अभिव्यक्ति अल्टरनेटिव

WHERE Value NOT REGEXP '(234|321)$'

प्रदर्शन विचार

  • RIGHT() फंक्शन इंडेक्स उपयोग रोकता है
  • बड़े टेबल्स के लिए जनरेटेड कॉलम + इंडेक्स:
    ALTER TABLE DemoTable 
    ADD Last3Chars VARCHAR(3) AS (RIGHT(CAST(Value AS CHAR), 3)) STORED,
    ADD INDEX idx_last3 (Last3Chars);
  • फिर सरल क्वेरी: WHERE Last3Chars NOT IN ('234','321')

सामान्य उपयोग के मामले

  • परीक्षण/अमान्य फोन नंबर बाहर करना (अंतिम 3 अंक 000, 999, आदि)
  • विशिष्ट पिन कोड सफिक्स वाले क्षेत्र बाहर करना
  • चेक डिजिट वैलिडेशन में विफल रिकॉर्ड्स फ़िल्टर करना
  • आंतरिक/टेस्ट अकाउंट नंबर पैटर्न बाहर करना
  1. - MySQL में किसी विशिष्ट सेल को खाली (empty string) कैसे करें?

    MySQL UPDATE: विशिष्ट सेल को खाली स्ट्रिंग पर सेट करना किसी विशिष्ट पंक्ति और कॉलम के मान को खाली स्ट्रिंग () पर सेट करने के लिए UPDATE स्टेटमेंट के साथ WHERE क्लॉज का उपयोग करें। उदाहरण: ID 1003 वाले छात्र का नाम खाली करें टेबल बनाएं: CREATE TABLE DemoTable ( Id INT, Name VARCHAR(50) ); I

  1. - MySQL में UPDATE और WHERE से खाली मानों को NULL में बदलें

    MySQL में खाली स्ट्रिंग () मानों को NULL में बदलने के लिए UPDATE स्टेटमेंट के साथ WHERE क्लॉज का उपयोग करें। यह डेटा सफाई, आयात के बाद सामान्यीकरण, और NULL बनाम खाली स्ट्रिंग अस्पष्टता दूर करने के लिए महत्वपूर्ण है। सिंटैक्स UPDATE table_name SET column_name = NULL WHERE column_name = ; व्यावहारिक

  1. - विशिष्ट कॉलम मानों के लिए एकल MySQL क्वेरी में एकाधिक काउंट प्राप्त करें

    इसके लिए, आप विशिष्ट कॉलम के लिए पैरामीटर मान के साथ एग्रीगेट फंक्शन SUM() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows affected (0.94 sec) इन्सर्ट कमा