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

MySQL में LEFT पैडिंग से हाइफन सेपरेटेड सीरियल नंबर बनाना

CONCAT() और RIGHT() के साथ पैडिंग

संख्यात्मक सीरियल नंबर को फिक्स्ड-लेंथ, हाइफन-सेपरेटेड फॉर्मेट (जैसे 000-100) में बदलने के लिए स्ट्रिंग कंकेटनेशन और सबस्ट्रिंग एक्सट्रैक्शन का उपयोग करें।

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

mysql> CREATE TABLE DemoTable829(SerialNumber INT);
Query OK, 0 rows affected (0.64 sec)

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

mysql> INSERT INTO DemoTable829 VALUES(100),(101),(102),(103),(104);
Query OK, 5 rows affected (...)

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

mysql> SELECT * FROM DemoTable829;
+--------------+
| SerialNumber |
+--------------+
| 100          |
| 101          |
| 102          |
| 103          |
| 104          |
+--------------+
5 rows in set (0.00 sec)

हाइफन के साथ बाएं पैडिंग क्वेरी

mysql> SELECT RIGHT(CONCAT('000-', SerialNumber), 7) FROM DemoTable829;

परिणाम

+----------------------------------------+
| RIGHT(CONCAT('000-', SerialNumber), 7) |
+----------------------------------------+
| 000-100                                |
| 000-101                                |
| 000-102                                |
| 000-103                                |
| 000-104                                |
+----------------------------------------+
5 rows in set (0.00 sec)

क्वेरी व्याख्या

  1. CONCAT('000-', SerialNumber) - प्रीफिक्स '000-' जोड़ता है: '000-100', '000-101', आदि
  2. RIGHT(..., 7) - दाएं से 7 वर्ण लेता है: '000-100' (7 वर्ण)
  3. यह मानता है कि SerialNumber अधिकतम 3 अंकों का है (100-999)

सामान्य फॉर्मूला

RIGHT(CONCAT(REPEAT('0', max_digits - 1) + '-', SerialNumber), max_digits + 1)

उदाहरण: 5 अंकों तक के लिए (00000-99999)

SELECT RIGHT(CONCAT('00000-', SerialNumber), 11) FROM DemoTable829;
-- '00000-100', '00000-101', आदि

बेहतर तरीका: LPAD() फंक्शन

SELECT CONCAT(LPAD(SerialNumber, 3, '0'), '-', LPAD(SerialNumber, 3, '0')) -- गलत

-- सही: दो भागों में विभाजित (यदि आवश्यक)
SELECT CONCAT(LPAD(FLOOR(SerialNumber/1000), 3, '0'), '-', LPAD(SerialNumber % 1000, 3, '0'))
-- लेकिन सरल मामले के लिए:
SELECT CONCAT('000-', LPAD(SerialNumber, 3, '0'))  -- '000-100' के लिए LPAD अनावश्यक

सही LPAD उपयोग

-- SerialNumber को 3 अंकों में पैड करें, फिर प्रीफिक्स जोड़ें
SELECT CONCAT('000-', LPAD(SerialNumber, 3, '0')) FROM DemoTable829;
-- परिणाम: '000-100', '000-101', ... (यदि SerialNumber पहले से 3 अंक है तो LPAD कुछ नहीं करता)

FORMAT() फंक्शन (MySQL 8.0+)

SELECT CONCAT('000-', FORMAT(SerialNumber, 0)) FROM DemoTable829;
-- FORMAT 1000 सेपरेटर जोड़ता है: 1,000 → अवांछित

जनरेटेड कॉलम के साथ स्थायी स्टोरेज

ALTER TABLE DemoTable829 
ADD SerialFormatted VARCHAR(20) AS (CONCAT('000-', LPAD(SerialNumber, 3, '0'))) STORED;

प्रिंट/डिस्प्ले के लिए printf-स्टाइल (एप्लिकेशन लेयर)

-- Python: f"{num:03d}" → "100"
-- PHP: sprintf("%03d", $num)
-- Java: String.format("%03d", num)

उपयोग के मामले

  • इनवॉइस नंबर: INV-000-100
  • उत्पाद SKU: PRD-000-100
  • कर्मचारी ID: EMP-000-100
  • टिकट नंबर: TKT-000-100
  1. - MySQL में कॉमा सेपरेटेड मानों के साथ रैंडम पंक्तियाँ कैसे प्राप्त करें?

    MySQL में रैंडम पंक्तियाँ प्राप्त करने के लिए ORDER BY RAND() का उपयोग किया जाता है। यदि आपके कॉलम में कॉमा सेपरेटेड मान हैं, तो आप NOT IN के साथ फ़िल्टर करके रैंडम परिणाम ले सकते हैं। टेबल बनाएं और डेटा डालें mysql> CREATE TABLE DemoTable1835 ( ListOfIds VARCHAR(20) ); mysql> INSERT INT

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

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

  1. - Apache के साथ MySQL का उपयोग करना

    आइए समझते हैं कि Apache के साथ MySQL का उपयोग कैसे करें: Apache एक वेब सर्वर सॉफ़्टवेयर है जिसे Apache सॉफ़्टवेयर फाउंडेशन द्वारा विकसित और रखरखाव किया जाता है। यह एक सॉफ़्टवेयर है जो वेब पेज एक्सेस करने के लिए उपयोगकर्ता से अनुरोध लेता है। HTTP अनुरोध पर कुछ सुरक्षा जांच की जाती है और फिर उपयोगक