在mysql数据库的数据类型中,有一个非常常用的varchar类型(相当于oracle的varchar2)。
比如
CREATE TABLE t1 (NAME VARCHAR(200))
而
SELECT LENGTH('麓湖生态城Y8地块-5栋(20~23单元、25~27单元)、6栋(28~33单元、35~39单元、50~53单元、55~63单元、65~71单元)、9栋(37~93单元、95~103单元、105~109单元、111~113单元)地下室、物管用房、门卫室')
返回248
那么
INSERT INTO t1 VALUES('麓湖生态城Y8地块-5栋(20~23单元、25~27单元)、6栋(28~33单元、35~39单元、50~53单元、55~63单元、65~71单元)、9栋(37~93单元、95~103单元、105~109单元、111~113单元)地下室、物管用房、门卫室')
能够成功吗?
答案是能够成功的。
因为VARCHAR(200),不是指200字节,而是200字符,是字符。
比如 abc 是3个字符,而 a你b 也是3个字符。
但是length('abc')和length('a你b')的结果是不一样的。
length()函数是返回单位字节的长度,要返回单位字符的长度函数是CHAR_length()。比如:
mysql> SELECT LENGTH('你好'),CHAR_LENGTH('你好'),BIT_LENGTH('你好');
+----------------+---------------------+--------------------+
| LENGTH('你好') | CHAR_LENGTH('你好') | BIT_LENGTH('你好') |
+----------------+---------------------+--------------------+
| 4 | 2 | 32 |
+----------------+---------------------+--------------------+
1 row in set (0.06 sec)
mysql>