二进制类型
M-Compatibility支持的二进制类型如表1所示。
|
名称 |
描述 |
存储空间 |
|---|---|---|
|
BINARY[(n)] |
二进制定长字符串,不足补空格。n是指字节长度,如不带精度n,默认精度为1。 |
最大为255个字节 |
|
VARBINARY(n) |
二进制变长字符串。n是指字节长度。 |
最大为65532个字节 |
|
BLOB[(n)] |
二进制大对象。n是指该类型的可选字节长度,指定n后将列创建为最小的但足以容纳n字节的BLOB类型。 |
最大为65535个字节 |
|
TINYBLOB |
二进制大对象。 |
最大为255个字节 |
|
MEDIUMBLOB |
二进制大对象。 |
最大为16777215个字节 |
|
LONGBLOB |
二进制大对象。 |
最大为1GB-1个字节 |
- sql_mode参数值包含“strict_trans_tables”时,非法输入或者输入超过范围时,会报error。
- sql_mode参数值不包含“strict_trans_tables”时,非法输入或者输入超过范围时,会返回截断后的值。
- 不支持‘||’连接符连接数据。
示例
显示用字符串输出二进制类型。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
--创建表。 m_db=# CREATE TABLE blob_type_t1 ( BT_COL1 BINARY(10), BT_COL2 VARBINARY(10), BT_COL3 BLOB, BT_COL4 BLOB(10) ) DISTRIBUTE BY REPLICATION; --插入数据。 m_db=# INSERT INTO blob_type_t1 VALUES ('blob_test1', 'blob_test2','blob_test3','blob_test4'); --查询表中的数据。 m_db=# SELECT * FROM blob_type_t1; bt_col1 | bt_col2 | bt_col3 | bt_col4 ------------+------------+------------+------------ blob_test1 | blob_test2 | blob_test3 | blob_test4 (1 row) --删除表。 m_db=# DROP TABLE blob_type_t1; --示例:BINARY类型 --创建表。 m_db=# CREATE TABLE blob_type_t2 ( BT_COL1 BINARY(5) ) DISTRIBUTE BY REPLICATION; --严格模式下插入的数据长度超过类型规定的长度报错。 m_db=# SET SQL_MODE = 'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero, no_auto_create_user,no_engine_substitution'; SET m_db=# INSERT INTO blob_type_t2 VALUES ('too long'); ERROR: value too long for type binary(5) CONTEXT: referenced column: bt_col1 --宽松模式下插入的数据长度超过类型规定的长度,数据截断插入。 m_db=# SET SQL_MODE = ''; SET m_db=# INSERT INTO blob_type_t2 VALUES ('too long'); INSERT 0 1 --查询表中的数据。 m_db=# SELECT * FROM blob_type_t2; bt_col1 --------- too l (1 row) --删除表。 m_db=# DROP TABLE blob_type_t2; |