首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以让mysql表列不区分大小写吗?

我可以让mysql表列不区分大小写吗?
EN

Stack Overflow用户
提问于 2014-01-02 10:42:09
回答 2查看 13.8K关注 0票数 6

我是mysql (和一般的sql )的新手,我正在尝试是否可以使插入到表中的列中的数据不区分大小写。

我正在存储州名称、城市名称等数据,所以我希望对这些类型的数据有一个唯一的约束,最重要的是使它们不区分大小写,这样我就可以依赖唯一性约束。

mysql是否支持在创建表期间或在列上设置唯一性约束时对列使用不区分大小写的选项?处理这些问题的通常方式是什么?我非常感谢任何替代的想法/建议来处理这个问题。

EDIT:按照建议,COLLATE我认为只适用于对插入的数据的查询。但是为了真正利用唯一性约束,我希望在INSERT上有一个不区分大小写的限制。例如,我希望mysql不允许插入California和california以及cALifornia,因为它们应该是相同的。但是如果我正确地理解了唯一性约束,那么在StateName上使用它仍然可以实现上述四种插入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-02 11:51:14

默认情况下,MySQL不区分大小写。

代码语言:javascript
复制
CREATE TABLE test
(
    name VARCHAR(20),
    UNIQUE(name)
);

mysql>     INSERT INTO test VALUES('California');
Query OK, 1 row affected (0.00 sec)

mysql>     INSERT INTO test VALUES('california');
ERROR 1062 (23000): Duplicate entry 'california' for key 'name'

mysql>     INSERT INTO test VALUES('cAlifornia');
ERROR 1062 (23000): Duplicate entry 'cAlifornia' for key 'name'

mysql>     INSERT INTO test VALUES('cALifornia');
ERROR 1062 (23000): Duplicate entry 'cALifornia' for key 'name'

mysql> SELECT * FROM test;
+------------+
| name       |
+------------+
| California |
+------------+
1 row in set (0.00 sec)

需要区分大小写时使用BINARY

要在MySQL中区分大小写,请按如下方式使用BINARY关键字

代码语言:javascript
复制
mysql>     CREATE TABLE test
    ->     (
    ->         name varchar(20) BINARY,
    ->         UNIQUE(name)
    ->     );
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql>     INSERT INTO test VALUES('California');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql>     INSERT INTO test VALUES('california');
Query OK, 1 row affected (0.00 sec)

mysql>     INSERT INTO test VALUES('cAlifornia');
Query OK, 1 row affected (0.00 sec)

mysql>     INSERT INTO test VALUES('cALifornia');
Query OK, 1 row affected (0.00 sec)

mysql>
mysql>     SELECT * FROM test;
+------------+
| name       |
+------------+
| California |
| cALifornia |
| cAlifornia |
| california |
+------------+
4 rows in set (0.00 sec)
票数 19
EN

Stack Overflow用户

发布于 2014-01-02 10:45:38

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20875543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档