समस्या
MySQL कमांड लाइन क्लाइंट में खाली स्ट्रिंग, स्पेस, टैब जैसे व्हाइटस्पेस वर्ण दिखाई नहीं देते - सभी खाली दिखते हैं।
समाधान: QUOTE() फ़ंक्शन
QUOTE() फ़ंक्शन स्ट्रिंग को SQL स्ट्रिंग लिटरल के रूप में प्रदर्शित करता है, जिससे अदृश्य वर्ण दिखाई देते हैं।
सिंटैक्स
SELECT yourColumnName, QUOTE(yourColumnName) FROM yourTableName;
व्यावहारिक उदाहरण
टेबल बनाना और विभिन्न व्हाइटस्पेस डालना
mysql> CREATE TABLE seeSpacesDemo (spaceValue VARCHAR(10));
mysql> INSERT INTO seeSpacesDemo VALUES
-> (''), -- खाली स्ट्रिंग
-> (' '), -- 1 स्पेस
-> (' '), -- 2 स्पेस
-> (' '); -- 3 स्पेस
सामान्य SELECT (सभी खाली दिखते हैं)
mysql> SELECT * FROM seeSpacesDemo; +------------+ | spaceValue | +------------+ | | | | | | | | +------------+
QUOTE() के साथ (स्पेस दिखाई देते हैं)
mysql> SELECT spaceValue, QUOTE(spaceValue) FROM seeSpacesDemo; +------------+-------------------+ | spaceValue | QUOTE(spaceValue) | +------------+-------------------+ | | '' | | | ' ' | | | ' ' | | | ' ' | +------------+-------------------+
QUOTE() आउटपुट समझाया
| मूल मान | QUOTE() आउटपुट | विवरण |
|---|---|---|
| '' (खाली) | '' | खाली स्ट्रिंग |
| ' ' (1 स्पेस) | ' ' | एकल उद्धरण में स्पेस |
| ' ' (2 स्पेस) | ' ' | दो स्पेस |
| '\t' (टैब) | '\t' | एस्केप्ड टैब |
| '\n' (न्यूलाइन) | '\n' | एस्केप्ड न्यूलाइन |
| '\\' (बैकस्लैश) | '\\\\' | एस्केप्ड बैकस्लैश |
| NULL | NULL | कोई उद्धरण नहीं |
अन्य उपयोगी फ़ंक्शन
HEX(column)- हेक्साडेसिमल प्रतिनिधित्व (हर बाइट दिखाता है)LENGTH(column)- बाइट लंबाई (स्पेस गिने जाते हैं)CHAR_LENGTH(column)- वर्ण लंबाई
HEX उदाहरण
mysql> SELECT spaceValue, HEX(spaceValue) FROM seeSpacesDemo; +------------+-----------------+ | spaceValue | HEX(spaceValue) | +------------+-----------------+ | | | | | 20 | | | 2020 | | | 202020 | +------------+-----------------+
20 = स्पेस का ASCII कोड
उपयोग के मामले
- डेटा गुणवत्ता जांच: अनपेक्षित व्हाइटस्पेस ढूंढना
- आयात सत्यापन: CSV/फिक्स्ड-विड्थ फ़ाइल पार्सिंग जांच
- डीबगिंग: तुलना विफल क्यों हो रही है (छिपे हुए वर्ण)