tablas sensibilidad nombres minúsculas minusculas mayúsculas mayusculas los las ignorar identificar distinguir diferenciar buscar mysql sql case-sensitive varchar unique-constraint

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 .