2012-10-10 15 views
10

मैंने टी = टी | 128 लिखने की कोशिश की लेकिन रेंज त्रुटि से बाहर निकला। मुझे संदेह है कि टिनिंट पर हस्ताक्षर किए गए हैं। हालांकि http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html कहता है कि यह हस्ताक्षरित (नीचे) हो सकता है। लेकिन यह नहीं कहता कि इसे कैसे हस्ताक्षरित किया जाए। मैं कैसे?mysql tinyint हस्ताक्षर किए गए

Type  Storage Minimum Value  Maximum Value 
     (Bytes) (Signed/Unsigned) (Signed/Unsigned) 
TINYINT  1   -128     127 
          0      255 
SMALLINT 2   -32768     32767 
          0      65535 
MEDIUMINT 3   -8388608    8388607 
          0     16777215 
INT   4   -2147483648   2147483647 
          0     4294967295 
BIGINT  8  -9223372036854775808 9223372036854775807 
          0    18446744073709551615 

उत्तर

11

UNSIGNED एक विशेषता है जिसे कई प्रकारों में जोड़ा जा सकता है। documentation से:

DATA_TYPE:

BIT[(length)] 
    | TINYINT[(length)] [UNSIGNED] [ZEROFILL] 
    | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] 
    | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] 
    | INT[(length)] [UNSIGNED] [ZEROFILL] 
    | INTEGER[(length)] [UNSIGNED] [ZEROFILL] 
    | BIGINT[(length)] [UNSIGNED] [ZEROFILL] 
    | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] 
    | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] 
    | DATE 
    | TIME 
    | TIMESTAMP 
    | DATETIME 
    | YEAR 
    | CHAR[(length)] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | VARCHAR(length) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | BINARY[(length)] 
    | VARBINARY(length) 
    | TINYBLOB 
    | BLOB 
    | MEDIUMBLOB 
    | LONGBLOB 
    | TINYTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | TEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | MEDIUMTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | LONGTEXT [BINARY] 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | ENUM(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | SET(value1,value2,value3,...) 
     [CHARACTER SET charset_name] [COLLATE collation_name] 
    | spatial_type 
5

आप कीवर्ड unsigned साथ अहस्ताक्षरित निशान। इसलिए, जब एक उदाहरण के लिए एक मेज बनाने:

CREATE TABLE `example_table` (
    `example_col` tinyint(3) unsigned NOT NULL 
); 

बजाय अधिक, या Alter table के लिए Create Table देखें।

1

सबसे पहले, आपको नकारात्मक मूल्यों के साथ कुछ करना चाहिए, अन्यथा ALTER TABLE...UNSIGNED एक त्रुटि फेंक देगा। उदाहरण के लिए आप सभी मानों को बढ़ा सकते हैं -

UPDATE table SET tiny_field = tiny_field + 128; 

फिर फील्ड प्रकार/विकल्प बदलने के लिए वैकल्पिक तालिका का उपयोग करें।

संबंधित मुद्दे