2011-02-02 12 views
12

Quali sono i comandi per abilitare e disabilitare la distinzione tra maiuscole e minuscole per impostazione predefinita per un intero database su un server MySQL? Sono a conoscenza dell'istruzione COLLATE, ma sembra che sia necessario inserirla in ogni istruzione SQL eseguita. C'è un'opzione per impostare questo a livello globale?Come configurare MySQL come maiuscolo/minuscolo

+0

qual è il contesto? per esempio. lingua su cui stai lavorando? – yoda

risposta

27

È possibile impostare le regole di confronto sia nella creazione del database sia nel livello di creazione della tabella come parte dell'istruzione CREATE TABLE.

Per impostare le regole di confronto per l'intero database, è possibile utilizzare:

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; 

È inoltre possibile modificare le regole di confronto su un database esistente tramite ALTER DATABASE. (Per ulteriori informazioni vedere la voce manuale di MySQL Database Character Set and Collation.)

Se, tuttavia, una sola tabella deve essere trattata come maiuscole e minuscole, si può semplicemente utilizzare:

DROP TABLE IF EXISTS test_table; 
CREATE TABLE test_table (
    test_id bigint unsigned NOT NULL auto_increment, 
    ... 

    PRIMARY KEY test_id (test_id), 
    ... 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_cs; 

(Caso insensitive essere "utf8_general_ci" .)

Infine, la sezione manuale principale di MySQL Character Set Support probabilmente vale un rapido esame. (Elenca il character sets and collations supported by MySQL, indica come s et the character set/collation at the server level, ecc.)

+6

In alternativa si usa comunemente anche utf8_bin'. – Unode

+0

@Unode Yup, utf8_bin non equivale "á" a "a", ecc. –

+0

Accoppiato a ciò che @middaparka ha detto e al mio commento precedente, si dovrebbe fare attenzione sull'ordinamento in quanto i caratteri accentati potrebbero non sempre ordinare come li si aspetta a. Tuttavia, la maggior parte di questi problemi è correlata a codifiche specifiche e impostazioni locali. (oltre lo scopo di questa domanda) – Unode

1

Sono venuto qui cercando di modificare le regole di confronto solo per una colonna specifica affinché sia ​​sensibile al maiuscolo/minuscolo e non per l'intera tabella o il Banca dati. Spero che aiuti qualcuno a cercare proprio questo.

Questa query potrebbe essere provato:

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin;