2011-02-02 13 views
12

Co to są polecenia domyślnie włączania i wyłączania rozróżniania wielkości liter dla całej bazy danych na serwerze MySQL? Jestem świadomy instrukcji COLLATE, ale wydaje się, że konieczne jest umieszczenie tego w każdym uruchomionym poleceniu SQL. Czy istnieje opcja ustawienia tego na całym świecie?Jak skonfigurować MySQL do rozróżniania wielkości liter

+0

jaki jest kontekst? na przykład język, nad którym pracujesz? – yoda

Odpowiedz

27

Można ustawić sortowanie zarówno na poziomie tworzenia bazy danych, jak i tworzenia tabeli jako część instrukcji CREATE TABLE.

Aby ustawić sortowania dla całej bazy danych, można użyć:

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; 

Można również zmienić sortowanie na istniejącej bazie danych poprzez ALTER DATABASE. (Aby uzyskać więcej informacji, zapoznaj się z MySQL Database Character Set and Collation ręcznego wprowadzania.)

Jeżeli jednak tylko jeden stół musi być traktowana jako wielkość liter, można po prostu użyć:

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; 

(wielkość liter ma znaczenie bycia „utf8_general_ci” .)

Wreszcie główna sekcja MySQL Character Set Support jest warta szybkiego przeglądania. (Wymienia character sets and collations supported by MySQL, informuje o tym, jak s et the character set/collation at the server level, itp.)

+6

Alternatywnie często używane jest 'utf8_bin'. – Unode

+0

@Unode Tak, utf8_bin nie utożsamia „A” na „A”, itp –

+0

Coupled co @middaparka powiedziane i mój poprzedni komentarz, należy być ostrożnym, sortowanie od zaakcentowane znaki mogą nie zawsze uporządkować sposób ich spodziewać do. Jednak większość tych problemów dotyczy określonych kodowań i ustawień regionalnych. (poza zakresem tego pytania) – Unode

1

Przybyłem tutaj, aby zmodyfikować sortowanie tylko dla określonej kolumny, aby wielkość liter była rozróżniana, a nie dla całej tabeli lub Baza danych. Mam nadzieję, że pomaga to komuś, kto szuka właśnie tego.

To zapytanie może być sądzony:

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin; 
Powiązane problemy