mysql - nombres - Pregunta única de la sensibilidad de mayúsculas y minúsculas de SQL
no distinguir mayusculas y minusculas oracle (3)
Estoy tratando de llenar una tabla SQL con una lista de palabras. La mesa en sí es bastante simple:
CREATE TABLE WORDS(
ID BIGINT AUTO_INCREMENT,
WORD VARCHAR(128) NOT NULL UNIQUE,
PRIMARY KEY(ID)
);
El problema que estoy encontrando es el siguiente: cuando hago las siguientes inserciones espalda con espalda
INSERT INTO WORDS(WORD) VALUES(''Seth'');
INSERT INTO WORDS(WORD) VALUES(''seth'');
La segunda inserción falla con una infracción de restricción ("entrada duplicada ''seth'' para la clave ''WORD''").
¿Cómo puedo obtener la restricción UNIQUE
en WORD
para que WORD
entre mayúsculas y minúsculas?
Hice mi clave varchar ÚNICA (1000). Funcionó.
Después de algunas pruebas y errores, encontré que cualquier cosa mayor o igual a 1100 varchar fallaría.
Para aclarar no probé entre 1001 y 1099.
Espero que esto ayude.
Parece que mysql no distingue entre mayúsculas y minúsculas por defecto :
Probablemente deba crear la columna con una intercalación que distinga mayúsculas y minúsculas (por ejemplo, utf8_bin):
CREATE TABLE WORDS (
ID BIGINT AUTO_INCREMENT,
WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE,
PRIMARY KEY(ID)
);
Por defecto, MySQL ignora las diferencias en los casos y los espacios finales en varchar
.
Si necesita que sea sensible a mayúsculas y minúsculas, puede modificar la tabla para que sea varchar(...) binary
.
Use show create table
para comprender mejor cómo MySQL convierte esto a notación completa.
Si necesita prestar atención a los espacios finales, además de varbinary
mayúsculas y minúsculas, use varbinary
lugar de varchar
.