Muy tarde a esta publicación, pero tengo algo un poco diferente que decir ...
>> "Are email addresses case sensitive?"
Bueno, "depende ..." (TM)
Algunas organizaciones realmente piensan que es una buena idea y sus servidores de correo electrónico imponen mayúsculas y minúsculas.
Entonces, para esos lugares locos, "Sí, los correos electrónicos distinguen entre mayúsculas y minúsculas".
Nota: Solo porque una especificación dice que puedes hacer algo no significa que sea una buena idea hacerlo.
El principio de KISS sugiere que nuestros sistemas utilizan correos electrónicos que no distinguen entre mayúsculas y minúsculas.
Mientras que el principio de robustez sugiere que aceptamos correos electrónicos sensibles a mayúsculas y minúsculas.
Solución:
- Almacene correos electrónicos con mayúsculas y minúsculas
- Enviar correos electrónicos con mayúsculas y minúsculas
- Realizar búsquedas internas con mayúsculas y minúsculas
Esto significaría que si este correo electrónico ya existe: usuario@x.com
... y aparece otro usuario y quiere usar este correo electrónico: USER@x.com
... que nuestra lógica de búsqueda insensible a mayúsculas y minúsculas devolvería un mensaje de error "Ese correo electrónico ya existe".
Ahora, tiene que tomar una decisión: ¿es esa solución adecuada en su caso?
De lo contrario, podría cobrar una tarifa de conveniencia a aquellos clientes que demanden soporte para sus correos electrónicos sensibles a mayúsculas y minúsculas e implementar una lógica personalizada que permita que USER@x.com ingrese a su sistema, incluso si user@x.com ya existe.
En cuyo caso, su lógica de búsqueda / validación de correo electrónico podría parecerse a este pseudocódigo:
if (user.paidEmailFee) {
// case sensitive email
query = "select * from users where email LIKE ' + user.email + '"
} else {
// case insensitive email
query = "select * from users where email ILIKE ' + user.email + '"
}
De esta manera, usted está imponiendo la insensibilidad a mayúsculas y minúsculas, pero permite a los clientes pagar por este soporte si están utilizando sistemas de correo electrónico que admiten tales tonterías.
ps ILIKE es una palabra clave de PostgreSQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html