【问题标题】:How to make MySql table data Case Sensitive?如何使 MySql 表数据区分大小写?
【发布时间】:2020-08-02 05:01:04
【问题描述】:

我想在 MySql 表的主键字段中输入关于区分大小写的数据。 但默认情况下,它不考虑表数据的大小写敏感性。

这是我的问题。

mysql> select id from product where id = 'a1';
+----+
| id |
+----+
| A1 |
+----+
1 row in set (0.00 sec)

mysql> insert into product values('a1', 'SomeName', 'SomeName', 200, 10, 10);
ERROR 1062 (23000): Duplicate entry 'a1' for key 'product.PRIMARY'

我也在创建表时尝试了 Collat​​ion,但没有得到所需的结果。 任何人都可以建议必须使用哪种排序规则或任何其他技术来使表的列域区分大小写。

【问题讨论】:

标签: mysql sql database primary-key collation


【解决方案1】:
ALTER TABLE product
    MODIFY COLUMN id VARCHAR(...) COLLATION ..._bin NOT NOT NULL;

... 是当前列大小和字符集。

我能想到的唯一区分大小写的事情是

  • base-64
  • Unix 文件名

但这些似乎不太可能是 PK。你的用例是什么?大多数事情最好不区分大小写。

(评论链接到使用ALTER DATABASE 的 SQL Server 建议;这不适用于 MySQL,因为它只会更改随后创建的表的 默认值。)

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 2014-07-19
    • 1970-01-01
    • 2011-08-10
    • 2010-11-18
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多