sensibilidad - Alterar la columna de la tabla Mysql para que sea sensible a mayúsculas
mysql sensibilidad a mayúsculas minúsculas de los nombres de las tablas (4)
Tengo una tabla en mi base de datos Mysql, que se utiliza para la autenticación. Y ahora, necesito hacer que la autenticación sea sensible al caso. Buscando en Google, me he dado cuenta de que las columnas Mysql no distinguen entre mayúsculas y minúsculas (a diferencia de Oracle) para las operaciones de búsqueda y el comportamiento predeterminado se puede cambiar al crear la tabla especificando el "binario", es decir.
CREATE TABLE USERS
(
USER_ID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
USER_NAME VARCHAR(50) BINARY NOT NULL
)
¿Puede alguien decirme cómo modificar la tabla en Mysql para agregar el "Binario" a una columna existente de una base de datos?
¡Gracias!
Consulte http://dev.mysql.com/doc/refman/5.0/en/charset-conversion.html
Ejemplo:
ALTER TABLE some_table MODIFY some_column BLOB;
ALTER TABLE some_table MODIFY some_column VARCHAR(50) BINARY;
La primera línea se convierte en un tipo de datos binarios (intento de minimizar la pérdida de caracteres) y la segunda se convierte de nuevo al tipo VARCHAR
con intercalación BINARY
.
En realidad, puede ser preferible almacenar como uno de los tipos binarios ( BLOB
, BINARY
o VARBINARY
) en lugar de simplemente cotejar BINARY
. Le sugiero que compare un poco, su millaje puede variar según sus datos reales y las consultas que necesite para ejecutar.
Deberías poder hacer algo como esto:
Edición: leer mal lo que pretendías hacer:
ALTER TABLE USERS MODIFY
USER_NAME VARCHAR(50)
CHARACTER SET latin1
COLLATE latin1_bin;
En lugar de alterar su tabla, aún puede realizar consultas que distingan entre mayúsculas y minúsculas en su tabla al autenticar, use la opción BINARIA de la siguiente manera:
SELECT BINARY * FROM USERS where USER_ID = 2 AND USER_NAME = ''someone'' LIMIT 1;
¿Esto ayuda?
ALTER TABLE USERS CHANGE USER_NAME USER_NAME VARCHAR(50) BINARY NOT NULL;