mysql varbinary类型_mysql中varbinary、binary、char、varchar异同
binary 與 varbinary 類型和char與varchar類型是相似的,只是他們存儲的是二進制數(shù)據(jù),也就是說他們是包含字節(jié)流而不是字符流,他們有二進制字符的集合和順序,他們的對比,排序是基于字節(jié)的數(shù)值進行的
binary與varbinary的最大長度和char與varchar是一樣的,只不過他們是定義字節(jié)長度,而char和varchar對應(yīng)的是字符長度。
存儲和取出時對尾部空格的處理
char(N)用來存儲非二進制字符串,插入時,對于少于N個字符的會自動在尾部加空格,查詢時,尾部的空格就會被丟棄掉
vachar(N) 用來存儲非二進制字符串,插入時,對于少于N個字符的不填補空格,查詢時,尾部的空格不會被丟棄掉
binary(N)存儲二進制字符串,插入進,少于N個字節(jié)的會自動在尾部加0x00,取出時,所有的字節(jié)都保留,返回定義長度的字節(jié)長度,在比較的時候,所有的字節(jié)都是有效的,并且0x00
varbinary在插入不會去填補0x00字節(jié),查詢的時候也不會丟棄任何字節(jié),在比較的時候,所有的字節(jié)都是有效的,并且0x00
大小比較時
char與varchar的字符比較中,是忽略大小寫與最后的空格的,如:
mysql> select 'a'='a ' , 'a'='A' , 'a'='A ';
+----------+---------+----------+
| 'a'='a ' | 'a'='A' | 'a'='A ' |
+----------+---------+----------+
|??????? 1 |?????? 1 |??????? 1 |
+----------+---------+----------+
1 row in set (0.00 sec)
而binary及varbinary的字節(jié)比較中,所有的信息都不會被忽略,如:
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.08 sec)
總結(jié)
以上是生活随笔為你收集整理的mysql varbinary类型_mysql中varbinary、binary、char、varchar异同的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux curl命令验证服务器断点续
- 下一篇: mysql command line c