Ho creato in precedenza una tabella MySQL e ora voglio scoprire quali regole di confronto utilizzano alcuni campi. Quali comandi SQL o MySQL posso usare per scoprire questo?Scoperta di collation di una colonna MySQL
19
A
risposta
26
Si potrebbe utilizzare SHOW FULL COLUMNS FROM tablename
che restituisce una colonna fascicolazione, ad esempio per un tavolo 'conti' con un confronto speciale sulla colonna 'nome'
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 | |
...
Oppure si potrebbe usare SHOW CREATE TABLE tablename
che si tradurrà in una dichiarazione come
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,
...
2
SHOW CREATE TABLE nometabella vi mostrerà le regole di confronto di ogni colonna, così come il confronto predefinito
4
Se si desidera che il confronto solo per quella colonna specifici (per un eventuale impiego con una sottoquery) ...
select COLLATION_NAME
from information_schema.columns
where TABLE_SCHEMA = 'tableschemaname'
and TABLE_NAME = 'tablename'
and COLUMN_NAME = 'fieldname';
FYI, SHOW CREATE TABLE mostra solo il set di colonne e confrontare se diverso ai valori predefiniti di tabella. Inoltre, le impostazioni predefinite della tabella non vengono visualizzate se corrispondono alle impostazioni predefinite del db. – maxhugen