mysql> CREATE TABLE primary2(boom text,id int,PRIMARY KEY(boom(5)) );
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO primary2 VALUES('viok',1);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO primary2 VALUES('viok',1);
ERROR 1062 (23000): Duplicate entry 'viok' for key 'PRIMARY'
mysql> INSERT INTO primary2 VALUES('viok ',1);
ERROR 1062 (23000): Duplicate entry 'viok ' for key 'PRIMARY'
STRING' viok'和' viok'是不同的。如何添加一个带空格的字符串?
答案 0 :(得分:2)
问:如何添加带空格的字符串?
答:这是不可能的。
TEXT值' viok'和' viok'就MySQL如何将那些存储为索引条目而言,不是唯一的。这是documented behavior:
如果索引TEXT列,则索引条目比较在末尾填充空格。这意味着,如果索引需要唯一值,则对于仅在尾随空格数方面不同的值,将出现重复键错误。例如,如果表格中包含' a',则尝试存储' a'导致重复键错误。对于BLOB列,情况并非如此。
答案 1 :(得分:0)
MySQL在字符串比较中忽略尾随空格。一种方法是添加一列以存储文本的尾随空格数。
一种方法是将其存储为varchar,该字符允许尾随空格。