web-dev-qa-db-ja.com

MySQL列の照合を発見する

以前にMySQLテーブルを作成しましたが、いくつかのフィールドがどの照合順序を使用しているかを調べたいと思います。これを発見するためにどのSQLまたはMySQLコマンドを使用できますか?

43
Trindaz

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,
...
64
0x4a6f4672

特定の列のみの照合が必要な場合(サブクエリで使用できるようにするため)...

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

SHOW CREATE TABLE tablenameは、各列の照合とデフォルトの照合を表示します

3
Explosion Pills