2012-02-17 23 views
6

मुझे किसी काम के लिए संकेतक के रूप में सेवा करने के लिए एक संख्या कॉलम चाहिए, लेकिन मैं नहीं चाहता कि यह रिकॉर्ड प्रति एक से अधिक बाइट ले ले। अगर मैं NUMBER (1) का उपयोग करता हूं, तो क्या यह मेरी आवश्यकता को पूरा करेगा?ओरेकल 11 जी: क्या मैं एक संख्या कॉलम बना सकता हूं जो केवल 1 बाइट स्टोर करता है?

उत्तर

14

NUMBER(1) कॉलम तब तक ले जाएगा जब इसे 1 अंकों की संख्या को स्टोर करने की आवश्यकता होती है। यही कारण है कि 1 से अधिक बाइट होने की संभावना है (, ऋणात्मक संख्याओं 3 बाइट्स की आवश्यकता होगी एक 0 1 बाइट की आवश्यकता है, संख्या 1-9 2 बाइट्स की आवश्यकता होती है)

SQL> create table foo(col1 number(1)); 

Table created. 

SQL> insert into foo values(1); 

1 row created. 

SQL> insert into foo values(9); 

1 row created. 

SQL> insert into foo values(-7); 

1 row created. 

SQL> select vsize(col1), col1 from foo; 

VSIZE(COL1)  COL1 
----------- ---------- 
      2   1 
      2   9 
      3   -7 

दूसरे हाथ पर, एक VARCHAR2(1 BYTE) स्तंभ के साथ एक मेज , स्टोरेज

SQL> create table bar(col1 varchar2(1)); 

Table created. 

SQL> insert into bar values('Y'); 

1 row created. 

SQL> insert into bar values('N'); 

1 row created. 

SQL> select vsize(col1), col1 from bar; 

VSIZE(COL1) C 
----------- - 
      1 Y 
      1 N 
+0

अच्छे उत्तर और deomonstration के लिए +1 पर प्रति 1 बाइट प्रति पंक्ति का उपयोग करेगा – oscilatingcretin