【问题标题】:Discover collation of a MySQL column发现 MySQL 列的排序规则
【发布时间】:2011-11-28 20:46:49
【问题描述】:

我之前创建了一个 MySQL 表,现在我想了解某些字段使用的排序规则。我可以使用哪些 SQL 或 MySQL 命令来发现这一点?

【问题讨论】:

    标签: mysql collation


    【解决方案1】:

    您可以使用SHOW FULL COLUMNS FROM tablename,它返回一个列Collat​​ion,例如对于在“name”列上具有特殊排序规则的表“accounts”

    mysql> SHOW FULL COLUMNS FROM accounts;
    +----------+--------------+-------------------+------+-----+---------+----------+
    | Field    | Type         | Collation         | Null | Key | Default | Extra    |
    +----------+--------------+-------------------+------+-----+---------+----------|
    | id       | int(11)      | NULL              | NO   | PRI | NULL    | auto_inc |
    | name     | varchar(255) | utf8_bin          | YES  |     | NULL    |          |
    | email    | varchar(255) | latin1_swedish_ci | YES  |     | NULL    |          |
    ...
    

    或者您可以使用SHOW CREATE TABLE tablename,这将导致如下语句

    mysql> SHOW CREATE TABLE accounts;
    CREATE TABLE `accounts` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
    `email` varchar(255) DEFAULT NULL,
    ...
    

    【讨论】:

    • 仅供参考,如果与表默认值不同,SHOW CREATE TABLE 仅显示列 SET 和 COLLATE。此外,如果与 db 默认值相同,则不会显示表默认值。
    【解决方案2】:

    如果您只想要特定列的排序规则(可能与子查询一起使用)...

    SELECT COLLATION_NAME
    FROM information_schema.columns
    WHERE TABLE_SCHEMA = 'tableschemaname'
    AND TABLE_NAME = 'tablename'
    AND COLUMN_NAME = 'fieldname';
    

    【讨论】:

      【解决方案3】:

      SHOW CREATE TABLE [tablename] 将显示每列的排序规则以及默认排序规则。

      【讨论】:

      • SHOW CREATE TABLE 不在我的 MySQL 5.7 DB 上执行此操作。
      猜你喜欢
      • 2022-08-08
      • 2011-11-14
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2011-08-18
      • 2018-12-19
      • 2011-11-15
      • 2011-10-22
      相关资源
      最近更新 更多