sql >> Databáze >  >> RDS >> Mysql

Použijte primární klíč citlivý na zvýraznění v MySQL

Soubory . Máte dvě možnosti, ne tři:

utf8_bin všechny tyto položky považuje za odlišné :demandé a demandé a Demandé .

utf8_..._ci (obvykle utf8_general_ci nebo utf8_unicode_ci ) považuje všechny tyto položky za stejné :demandé a demandé a Demandé .

Pokud chcete rozlišovat pouze malá a velká písmena (demandé =demandé , ale ani jeden neodpovídá Demandé ), máte smůlu.

Pokud chcete pouze citlivost na přízvuk (demandé =Demandé , ale ani jeden neodpovídá demande ), máte smůlu.

Prohlášení . Nejlepší způsob, jak dělat, co si vyberete:

CREATE TABLE (
    name VARCHAR(...)  CHARACTER SET utf8  COLLATE utf8_...  NOT NULL,
    ...
    PRIMARY KEY(name)
)

Neměňte řazení za chodu . Pokud se řazení liší v name, index se nepoužije (to znamená, že bude pomalý) :

WHERE name = ... COLLATE ...

BINÁRNÍ . datové typy BINARY , VARBINARY a BLOB jsou velmi podobné CHAR , VARCHAR a TEXT pomocí COLLATE ..._bin . Snad jediný rozdíl je v tom, že text bude zkontrolován na platné utf8 uložené v VARCHAR ... COLLATE ..._bin , ale nebude zkontrolován při ukládání do VARBINARY... . Srovnání (WHERE , ORDER BY , atd.) bude stejný; to znamená, že jednoduše porovnejte bity, neprovádějte skládání pouzdra nebo oddělování zvýraznění atd.



  1. Jak obejít MySQL Chyba tabulky nelze znovu otevřít

  2. Časový limit dotazu SQL Server v závislosti na klauzuli Where

  3. MySql s chybou JAVA. Poslední paket úspěšně odeslaný na server byl před 0 milisekundami

  4. MySQL zřetězení všech sloupců