मैं सिर्फ यह जानना चाहता हूं कि DataType के ZEROFILL
लिए परिभाषित करने का क्या लाभ / उपयोग INT
है MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
मैं सिर्फ यह जानना चाहता हूं कि DataType के ZEROFILL
लिए परिभाषित करने का क्या लाभ / उपयोग INT
है MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
जवाबों:
जब आप किसी स्तंभ का चयन करते हैं, तो ZEROFILL
वह उस क्षेत्र के प्रदर्शित मान को दिखाता है जिसमें स्तंभ परिभाषा में निर्दिष्ट प्रदर्शन चौड़ाई तक शून्य होता है। प्रदर्शन चौड़ाई की तुलना में लंबे समय तक मानों को छोटा नहीं किया गया है। ध्यान दें कि इसका उपयोग ZEROFILL
भी निहित है UNSIGNED
।
ZEROFILL
डेटा को कैसे संग्रहीत किया जाता है, इसका उपयोग करने और प्रदर्शन चौड़ाई का कोई प्रभाव नहीं पड़ता है। यह केवल यह प्रदर्शित करता है कि यह कैसे प्रभावित करता है।
यहाँ कुछ उदाहरण एसक्यूएल है जो ZEROFILL
निम्न का उपयोग प्रदर्शित करता है :
CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL);
INSERT INTO yourtable (x,y) VALUES
(1, 1),
(12, 12),
(123, 123),
(123456789, 123456789);
SELECT x, y FROM yourtable;
परिणाम:
x y
00000001 1
00000012 12
00000123 123
123456789 123456789
समझने के लिए एक उदाहरण, जहाँ उपयोग ZEROFILL
दिलचस्प हो सकता है:
जर्मनी में, हमारे पास 5 अंकों के ज़िपकोड हैं। हालाँकि, वे कोड एक शून्य के साथ शुरू हो सकते हैं, इसलिए 80337
मुनिक के लिए एक वैध ज़िपकोड है, 01067
बर्लिन का एक ज़िपकोड है।
जैसा कि आप देखते हैं, किसी भी जर्मन नागरिक को उम्मीद है कि ज़िपकोड को 5 अंकों के कोड के रूप में प्रदर्शित किया जाएगा, इसलिए 1067
यह अजीब लगता है।
उन डेटा को संग्रहीत करने के लिए, आप एक VARCHAR(5)
या फिर उपयोग कर सकते हैं INT(5) ZEROFILL
जबकि zerofilled पूर्णांक के दो बड़े फायदे हैं:
1067
, तो आप अभी भी 01067
वापस आते हैंशायद इस उदाहरण के उपयोग को समझने में मदद करता है ZEROFILL
।
यह परेशान व्यक्तित्वों के लिए एक विशेषता है जो वर्ग बक्से पसंद करते हैं।
आप डालें
1
23
123
लेकिन जब आप चयन करते हैं, तो यह मानों को पैड करता है
000001
000023
000123
यह मामला है कि आप की आवश्यकता होगी में सही छंटाई करने में मदद करता श्रेणीबद्ध कुछ और (एक और नंबर या पाठ) एक "पाठ" तो के रूप में हल हो की आवश्यकता होगी जो के साथ इस "पूर्णांक"।
उदाहरण के लिए,
यदि आप पूर्णांक क्षेत्र नंबरों का उपयोग करने की आवश्यकता होगी (मान लीजिए कि 5 है) concatenated के रूप में एक 005 या 10/0005
मुझे पता है कि मुझे पार्टी में देर हो रही है लेकिन मुझे लगता है कि ज़ीरोफिल टिनिट (1) के बूलियन प्रतिनिधित्व के लिए सहायक है। नल का मतलब हमेशा गलत नहीं होता है, कभी-कभी आप इसे नहीं चाहते हैं। एक छोटे से झटके से, आप प्रभावी रूप से उन मूल्यों को INT में परिवर्तित कर रहे हैं और किसी भी भ्रम की स्थिति को दूर कर सकते हैं। आपका एप्लिकेशन फिर उन मानों को प्राथमिक डेटाटाइप के समान व्यवहार कर सकता है True = Not (0)
666
कि मैं इस जवाब को रखना चाहूंगा;-)
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM tin3;
+----+------------+
| id | val |
+----+------------+
| 1 | 0000000012 |
| 2 | 0000000007 |
| 4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
| 10 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
| 8 |
+-------+
1 row in set (0.00 sec)
जब वैकल्पिक (गैर-मानक) विशेषता ZEROFILL के साथ संयोजन में उपयोग किया जाता है, तो रिक्त स्थान की पैडिंग को शून्य से बदल दिया जाता है। उदाहरण के लिए, INT (4) ZEROFILL के रूप में घोषित कॉलम के लिए, 5 का मान 0005 के रूप में लिया गया है।
यदि आप एक संख्यात्मक स्तंभ के लिए शून्य निर्दिष्ट करते हैं, तो MySQL स्वचालित रूप से स्तंभ के लिए UNSIGNED विशेषता जोड़ता है।
संख्यात्मक डेटा प्रकार जो UNSIGNED विशेषता की अनुमति देते हैं, वे भी SIGNED की अनुमति देते हैं। हालाँकि, इन डेटा प्रकारों पर डिफ़ॉल्ट रूप से हस्ताक्षर किए जाते हैं, इसलिए SIGNED विशेषता का कोई प्रभाव नहीं पड़ता है।
उपरोक्त विवरण MYSQL की आधिकारिक वेबसाइट से लिया गया है।
zerofill
गैर-मानक है। " विशेषता है जब एक स्तंभ भाव या में शामिल है नजरअंदाज कर दिया है प्रश्नों। आप एक पूर्णांक स्तंभ है कि में प्रदर्शन चौड़ाई से भी बड़ा मान संग्रहीत हैं विशेषता, आपको समस्याएं आ सकती जब MySQL कुछ जटिल मिलती है के लिए अस्थायी तालिकाओं उत्पन्न करता है। इन मामलों में , MySQL का मानना है कि कॉलम डिस्प्ले की चौड़ाई के भीतर डेटा वैल्यू फिट होती है। "ZEROFILL
UNION
ZEROFILL