it-swarm.com.de

SQL-spezifische Varchar-Groß-/Kleinschreibung

Ich versuche, eine SQL-Tabelle mit einer Liste von Wörtern zu füllen. Der Tisch selbst ist ziemlich einfach:

CREATE TABLE WORDS(
  ID BIGINT AUTO_INCREMENT, 
  Word VARCHAR(128) NOT NULL UNIQUE, 
  PRIMARY KEY(ID)
);

Das Problem, dem ich begegne, ist folgendes: Wenn ich die folgenden Einsätze hintereinander mache

INSERT INTO WORDS(Word) VALUES('Seth');
INSERT INTO WORDS(Word) VALUES('seth');

Die zweite Einfügung schlägt mit einer Einschränkungsverletzung ("Doppelter Eintrag für Schlüssel" Word "") fehl.

Wie kann ich die UNIQUE-Einschränkung von Word auf Groß- und Kleinschreibung beziehen?

52
Seth

Sieht so aus, als wäre mysql Groß Kleinschreibung unabhängig - /:

Möglicherweise müssen Sie die Spalte mit einer Groß-/Kleinschreibung (z. B. utf8_bin) erstellen:

CREATE TABLE WORDS (
    ID BIGINT AUTO_INCREMENT, 
    Word VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE, 
    PRIMARY KEY(ID)
);
81
Bill Brasky

Standardmäßig ignoriert MySQL Unterschiede zwischen Groß- und Kleinschreibung und nachgestellten Leerzeichen in varchar.

Wenn die Groß-/Kleinschreibung beachtet werden soll, können Sie die Tabelle in varchar(...) binary ändern.

Verwenden Sie show create table, um besser zu verstehen, wie MySQL dies in die vollständige Notation umwandelt.

Wenn Sie auf nachfolgende Leerzeichen achten und die Groß- und Kleinschreibung beachten müssen, verwenden Sie varbinary anstelle von varchar.

6
George Bailey

Ich habe meinen UNIQUE-Schlüssel varchar (1000) gemacht. Es funktionierte.

Nach einigem Ausprobieren stellte sich heraus, dass etwas, das größer oder gleich 1100 Varchar ist, fehlschlagen würde. 

Zur Klarstellung habe ich zwischen 1001 und 1099 nicht versucht.

Hoffe das hilft.

0
suleman