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

MySQL में प्रत्येक एन्यूमरेशन का इंडेक्स मान कैसे दिखाएं?


वास्तव में, ENUM कॉलम स्पेसिफिकेशन में सूचीबद्ध तत्वों को इंडेक्स नंबर दिए जाते हैं जो 1 से शुरू होते हैं। यहां "इंडेक्स" शब्द एन्यूमरेशन मानों की सूची के भीतर स्थिति की ओर इंगित करता है और वे टेबल इंडेक्स से संबंधित नहीं हैं। निम्नलिखित उदाहरणों की मदद से हम दिखा सकते हैं कि प्रत्येक MySQL एन्यूमरेशन का एक इंडेक्स मान होता है:

एन्यूमरेशन मान के बजाय इंडेक्स नंबर डालकर

हम ENUM कॉलम में मानों को उनके इंडेक्स नंबर की मदद से डाल सकते हैं बजाय मान लिखने के। उदाहरण के लिए, नीचे दी गई टेबल में हमारे पास दो ENUM मान 'pass' और 'fail' हैं। चूंकि 'pass' एन्यूमरेशन सूची में पहले लिखा गया है इसलिए इसे इंडेक्स नंबर '1' मिला और 'fail' के लिए '2' होगा। अब हम इंडेक्स नंबर डालकर भी मान डाल सकते हैं जैसे:

mysql> Insert into marks(id,name,result)values(103,'Daksh','1'); Query OK, 1 row affected (0.06 sec) 
mysql> Insert into marks(id,name,result)values(104,'Shayra','2'); Query OK, 1 row affected (0.07 sec) 
mysql> Select * from marks; 
+-----+---------+--------+ 
| id  | Name    | Result | 
+-----+---------+--------+ 
| 101 | Aarav   | Pass   | 
| 102 | Yashraj | Fail   | 
| 103 | Daksh   | Pass   | 
| 104 | Shayra  | Fail   | 
+-----+---------+--------+ 
4 rows in set (0.00 sec)

उपरोक्त क्वेरी में, हमने एन्यूमरेशन मान pass और fail के लिए क्रमशः इंडेक्स नंबर 1 और 2 का उपयोग किया है।

एन्यूमरेशन मान के बजाय खाली स्ट्रिंग डालकर

खाली स्ट्रिंग का इंडेक्स मान 0 होता है। खाली स्ट्रिंग डालने से पहले, SQL मोड TRADITIONAL, STRICT_TRANS_TABLES या STRICT_ALL_TABLES नहीं होना चाहिए। निम्नलिखित उदाहरण की मदद से हम इसे समझ सकते हैं:

mysql> SET SESSION sql_mode = ''; Query OK, 0 rows affected (0.00 sec) 
mysql> Insert into marks(id, name, result) values(105,'Yashraj',''); Query OK, 1 row affected, 1 warning (0.06 sec)

उपरोक्त क्वेरी एन्यूमरेशन मान के स्थान पर खाली स्ट्रिंग डालेगी। MySQL निम्नलिखित चेतावनी के साथ खाली स्ट्रिंग डालता है।

mysql> Show warnings; 
+---------+------+---------------------------------------------+ 
| Level   | Code | Message                                     | 
+---------+------+---------------------------------------------+ 
| Warning | 1265 | Data truncated for column 'Result' at row 1 | 
+---------+------+---------------------------------------------+ 
1 row in set (0.00 sec)

अब जब हम टेबल चेक करते हैं, तो हम ENUM फील्ड में एक खाली स्ट्रिंग देख सकते हैं।

mysql> Select * from marks; 
+-----+---------+--------+ 
| id  | Name    | Result | 
+-----+---------+--------+ 
| 101 | Aarav   | Pass   | 
| 102 | Yashraj | Fail   | 
| 103 | Daksh   | Pass   | 
| 104 | Shayra  | Fail   | 
| 105 | Yash    |        | 
+-----+---------+--------+ 
5 rows in set (0.00 sec) 
mysql> Select result+0 As result_index from marks; 
+--------------+ 
| result_index | 
+--------------+ 
| 1            | 
| 2            | 
| 1            | 
| 2            | 
| 0            | 
+--------------+ 
5 rows in set (0.01 sec) 
उपरोक्त क्वेरी के आउटपुट से, यह स्पष्ट है कि खाली स्ट्रिंग का इंडेक्स मान 0 है।

एन्यूमरेशन मान के बजाय NULL डालकर

हम एन्यूमरेशन मानों के स्थान पर NULL डाल सकते हैं क्योंकि हम ENUM कॉलम के साथ NOT NULL निर्दिष्ट नहीं करते हैं। NULL का इंडेक्स मान NULL होता है। उदाहरण के लिए, निम्नलिखित क्वेरी की मदद से हम टेबल 'result' के एन्यूमरेशन कॉलम में NULL डालते हैं और इसके इंडेक्स मान की जांच कर सकते हैं।

mysql> Create table result(Id INT PRIMARY KEY NOT NULL, Name Varchar(10), Grade ENUM('POOR','GOOD')); Query OK, 0 rows affected (0.25 sec) 
mysql> Insert into result(id, name, grade) values(100, 'Rahul', NULL); Query OK, 1 row affected (0.06 sec)

उपरोक्त क्वेरी एन्यूमरेशन मान के स्थान पर NULL मान डालती है जिसे नीचे दी गई क्वेरी की मदद से चेक किया जा सकता है:

mysql> Select * from result; 
+-----+-------+-------+ 
| Id  | Name  | Grade | 
+-----+-------+-------+ 
| 100 | Rahul | NULL  | 
+-----+-------+-------+ 
1 row in set (0.00 sec)

अब, अगली क्वेरी की मदद से, हम देख सकते हैं कि NULL का इंडेक्स मान NULL है।

mysql> Select Grade+0 As Grade_index from result; 
+-------------+ 
| Grade_index | 
+-------------+ 
| NULL        | 
+-------------+ 
1 row in set (0.00 sec)

  1. - MySQL में डिफ़ॉल्ट मान NONE कैसे सेट करें

    MySQL में डिफ़ॉल्ट मान सेट करने के लिए DEFAULT कीवर्ड का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( ClientCountryName varchar(100) DEFAULT NONE ); Query OK, 0 rows affected (0.65 sec) हमने ऊपर डालने के लिए डिफ़ॉल्ट सेट किया है। अब इन्सर्ट कमांड का उपयोग करके ट

  1. - MySQL SELECT में कॉलम मान को दो बार दिखाएं

    CONCAT() के साथ कॉलम मान को डुप्लिकेट करना एक कॉलम के मान को दो बार (या अधिक) जोड़कर दिखाने के लिए CONCAT() फंक्शन का उपयोग करें। टेबल और डेटा CREATE TABLE DemoTable ( Value INT ); Query OK, 0 rows affected (0.73 sec) INSERT INTO DemoTable VALUES(100); Query OK, 1 row affected (0.30 sec) सभ

  1. - MySQL में उपयोगकर्ता वेरिएबल से दो फील्ड मानों को कैसे स्वैप करें?

    MySQL में दो कॉलम मान स्वैप करना: उपयोगकर्ता वेरिएबल का उपयोग MySQL में एक ही पंक्ति के दो कॉलम मानों को स्वैप करने के लिए उपयोगकर्ता वेरिएबल (@var) का उपयोग करके अस्थायी भंडारण किया जा सकता है। उदाहरण: Id=2 वाली पंक्ति में Number1 और Number2 स्वैप करें टेबल बनाएं: CREATE TABLE DemoTable ( Id I