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

MySQL में विशिष्ट लंबाई के स्ट्रिंग फ़ील्ड कैसे क्वेरी करें?

CHAR_LENGTH() और LENGTH() फ़ंक्शन

MySQL में किसी कॉलम में **विशिष्ट लंबाई** वाले स्ट्रिंग मान खोजने के लिए CHAR_LENGTH() (कैरेक्टर गिनती) या LENGTH() (बाइट गिनती) का उपयोग करें।

सिंटैक्स

केस 1: CHAR_LENGTH() - कैरेक्टर संख्या

SELECT * FROM yourTableName 
WHERE CHAR_LENGTH(yourColumnName) = specificLength;

बहु-बाइट कैरेक्टर (यूनिकोड, हिंदी, चीनी) के लिए सही।

केस 2: LENGTH() - बाइट संख्या

SELECT * FROM yourTableName 
WHERE LENGTH(yourColumnName) = specificByteLength;

बाइट-स्तरीय जांच के लिए, या लैटिन1/एससीआईआई डेटा के लिए।

व्यावहारिक उदाहरण

1. टेबल बनाएं और डेटा डालें

mysql> CREATE TABLE StringWithSpecificLength (
    -> Id INT,
    -> Name VARCHAR(100),
    -> FavouriteLanguage VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.52 sec)

mysql> INSERT INTO StringWithSpecificLength VALUES(1, 'John', 'Java');
mysql> INSERT INTO StringWithSpecificLength VALUES(2, 'Bob', 'PHP');
mysql> INSERT INTO StringWithSpecificLength VALUES(3, 'Carol', 'Python');
mysql> INSERT INTO StringWithSpecificLength VALUES(4, 'Sam', 'Ruby');
mysql> INSERT INTO StringWithSpecificLength VALUES(5, 'Mike', 'Pascal');

2. डेटा देखें

mysql> SELECT * FROM StringWithSpecificLength;
+------+-------+-------------------+
| Id   | Name  | FavouriteLanguage |
+------+-------+-------------------+
| 1    | John  | Java              |
| 2    | Bob   | PHP               |
| 3    | Carol | Python            |
| 4    | Sam   | Ruby              |
| 5    | Mike  | Pascal            |
+------+-------+-------------------+
5 rows in set (0.00 sec)

3. लंबाई 6 वाले भाषा नाम खोजें

mysql> SELECT * FROM StringWithSpecificLength 
    -> WHERE CHAR_LENGTH(FavouriteLanguage) = 6;
+------+-------+-------------------+
| Id   | Name  | FavouriteLanguage |
+------+-------+-------------------+
| 3    | Carol | Python            |
| 5    | Mike  | Pascal            |
+------+-------+-------------------+
2 rows in set (0.00 sec)

CHAR_LENGTH vs LENGTH

फ़ंक्शनगिनता हैउदाहरण: 'नमस्ते' (UTF-8)
CHAR_LENGTH()कैरेक्टर (कोड पॉइंट)4
LENGTH()बाइट्स12 (3 बाइट्स/कैरेक्टर × 4)

नियम: यूनिकोड/बहुभाषी डेटा के लिए हमेशा CHAR_LENGTH() उपयोग करें।

रेंज क्वेरी

-- लंबाई 5 से 10 के बीच
WHERE CHAR_LENGTH(col) BETWEEN 5 AND 10

-- न्यूनतम लंबाई
WHERE CHAR_LENGTH(col) >= 3

-- अधिकतम लंबाई
WHERE CHAR_LENGTH(col) <= 20

प्रदर्शन

  • कॉलम पर फ़ंक्शन → इंडेक्स उपयोग नहीं (फुल स्कैन)
  • बड़े टेबल्स के लिए: लंबाई कॉलम अलग स्टोर करें (जनरेटेड कॉलम/ट्रिगर)
  • MySQL 8.0+: फंक्शनल इंडेक्स CREATE INDEX idx_len ON t ((CHAR_LENGTH(col)))
  1. - MySQL में REGEXP का उपयोग करके स्ट्रिंग में विशिष्ट वर्ण खोजें

    REGEXP ऑपरेटर का उपयोग करके जांचें कि क्या कोई स्ट्रिंग किसी विशेष क्रम में वर्णों के अनुक्रम को समाहित करती है। टेबल बनाना और डेटा डालना CREATE TABLE DemoTable (Value VARCHAR(50)); Query OK, 0 rows affected (3.92 sec) INSERT INTO DemoTable VALUES(XYSJGHAKLMVDFFSA),(PQRSTJAVAL),(SJATUVAK),(JSTUV

  1. - MySQL क्वेरी: स्ट्रिंग लंबाई के आधार पर तारे (*) जोड़ना

    RPAD() फंक्शन का उपयोग करके स्ट्रिंग लंबाई के अनुसार तारे जोड़ना इसके लिए RPAD() फंक्शन का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1626 ( Name varchar(20) ); Query OK, 0 rows affected (0.37 sec) रिकॉर्ड डालें: insert into DemoTable1626 values(Robert); Query OK, 1 row affected (0.13 sec)

  1. - MySQL में VARCHAR स्ट्रिंग से हाइफ़न के बाद की संख्याओं को कैसे हटाएं

    समाधान SUBSTRING_INDEX() फंक्शन का उपयोग करके हाइफ़न से पहले का भाग प्राप्त करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2040 VALUES (John-232), (Carol-901), (David-987); अपडेट क्वेरी UPDATE DemoTable2040 SET StudentCode = SUBSTRING_INDEX(StudentCode, -, 1); परिणाम +-------------+ | StudentCod