mysql varbinary 长度_mysql8 参考手册--BINARY和VARBINARY类型
BINARY和VARBINARY類型與CHAR和VARCHAR類似,只是它們存儲(chǔ)的是二進(jìn)制字符串而不是非二進(jìn)制字符串。也就是說(shuō),它們存儲(chǔ)字節(jié)字符串而不是字符串。這意味著它們具有二進(jìn)制字符集和排序規(guī)則,并且比較和排序基于值中字節(jié)的數(shù)值。
對(duì)于BINARY和VARBINARY,允許的最大長(zhǎng)度與CHAR和VARCHAR相同,只是BINARY和VARBINARY的長(zhǎng)度是以字節(jié)而不是字符度量的。
BINARY和VARBINARY數(shù)據(jù)類型不同于CHAR BINARY和VARCHAR BINARY數(shù)據(jù)類型。對(duì)于后一種類型,BINARY屬性不會(huì)將列視為二進(jìn)制字符串列。相反,它將使用列字符集(如果未指定列字符集,則使用表默認(rèn)字符集)的二進(jìn)制`(_bin)'排序規(guī)則,并且列本身存儲(chǔ)非二進(jìn)制字符串,而不是二進(jìn)制字節(jié)字符串。例如,如果默認(rèn)字符集是utf8mb4,則CHAR(5)BINARY被視為CHAR(5)character set utf8mb4 COLLATE utf8mb4_bin。這與BINARY(5)不同,后者存儲(chǔ)具有二進(jìn)制字符集和排序規(guī)則的5字節(jié)二進(jìn)制字符串。
如果未啟用嚴(yán)格的SQL模式,并且您為BINARY或VARBINARY列分配的值 超過(guò)了列的最大長(zhǎng)度,則該值將被截?cái)嘁赃m合并生成警告。對(duì)于截?cái)嗟那闆r,要導(dǎo)致發(fā)生錯(cuò)誤(而不是警告)并抑制該值的插入,請(qǐng)使用嚴(yán)格的SQL模式。
當(dāng)存儲(chǔ)二進(jìn)制值時(shí),它們用pad值填充到指定的長(zhǎng)度。pad值為0x00(零字節(jié))。值用0x00右填充以進(jìn)行插入,并且不刪除用于檢索的尾隨字節(jié)。所有字節(jié)在比較中都是重要的,包括按順序和不同的操作。0x00和space的比較不同,0x00在space之前排序。
示例:對(duì)于BINARY(3)列, 在插入時(shí)'a '變?yōu)?'a \0'。 插入時(shí)'a\0'變?yōu)?#39;a\0\0'。兩個(gè)插入的值均保持不變以進(jìn)行檢索。
對(duì)于VARBINARY,不存在插入的填充,也不剝離用于檢索的字節(jié)。所有字節(jié)在比較中都是重要的,包括按順序和不同的操作。0x00和space的比較不同,0x00在space之前排序。
對(duì)于剝離尾隨字節(jié)或比較忽略它們的情況,如果一列具有要求唯一值的索引,則將僅尾隨字節(jié)數(shù)不同的值插入該列會(huì)導(dǎo)致重復(fù)鍵錯(cuò)誤。例如,如果表包含'a',則嘗試存儲(chǔ)'a\0'會(huì)導(dǎo)致重復(fù)鍵錯(cuò)誤。
如果打算使用BINARY數(shù)據(jù)類型存儲(chǔ)二進(jìn)制數(shù)據(jù)并且要求檢索的值與存儲(chǔ)的值完全相同,則應(yīng)仔細(xì)考慮上述填充和剝離特性 。以下示例說(shuō)明了 值的0x00填充如何影響 YBINAR列值比較:
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t SET c= 'a';
Query OK, 1 row affected (0.01 sec)
mysql> SELECT HEX(c), c= 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 | 0 | 1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
如果檢索的值必須與為存儲(chǔ)指定的值相同且沒有填充,則最好使用VARBINARY或使用 一種 BLOB數(shù)據(jù)類型來(lái)代替。
總結(jié)
以上是生活随笔為你收集整理的mysql varbinary 长度_mysql8 参考手册--BINARY和VARBINARY类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 配置管理小报100329:脚本中ftp命
- 下一篇: Exception from HRESU