在大多数方面,你可以认为一个TEXT行列就是你一个大的VARCHAR列。同样,你可以认为一个BLOB列是一个VARCHAR BINARY列。差别是: 1、用MySQL版本3.23.2以上,你能在BLOB和TEXT列上索引。而旧的MySQL版本不支持这个。 
2、当值被存储时,对BLOB和TEXT列不会删除拖后的空格,而VARCHAR列会删除字符串尾的空格。 
3、BLOB和TEXT列不能有DEFAULT值

解决方案 »

  1.   

    因为BLOB和TEXT值可以是非常长的,当使用他们时,你可能遇到一些限制: 1、如果你想在一个BLOB或TEXT列上使用 GROUP BY 或 ORDER BY,你必须将列值变换成一个定长对象。这样做的标准方法是用 SUBSTRING 函数。
    例如: 
    mysql> select comment from tbl_name,substring(comment,20) as substr ORDER BY substr;如果你不这样做,在排序时,只有列的首 max_sort_length 个字节被使用,缺省的max_sort_length是1024;这个值能在启动mysqld服务器时使用-O开关符选择改变。你可以在包含BLOB或TEXT值得一个表达式上分组(group),通过指定列的位置或使用一个别名: mysql> select id,substring(blob_col,1,100) from tbl_name
               GROUP BY 2;
    mysql> select id,substring(blob_col,1,100) as b from tbl_name
               GROUP BY b;2、一个BLOB或TEXT对象的最大尺寸由其类型决定,但是你能在客户与服务器之间是实际传输的最大值由可用的内存数量和通讯缓冲区的大小来决定。你能改变消息缓冲区大小,但是你必须在服务器和客户两端做。如何设置可查看MySQL手册的 调节服务器参数。