이 게시물에 늦었지만, 조금 다른 말이 있습니다 ...
>> "Are email addresses case sensitive?"
글쎄, "그것은 달려있다 ..." (TM)
실제로 일부 조직에서는 이것이 좋은 생각이라고 생각하며 전자 메일 서버는 대 / 소문자를 구분합니다.
따라서 그 미친 장소의 경우 "예, 이메일은 대소 문자를 구분합니다."
참고 : 사양에 따르면 무언가를 할 수 있다고해서 그렇게하는 것이 좋은 것은 아닙니다.
KISS의 원칙은 제안 우리의 시스템은 대소 문자를 구분 이메일을 사용합니다.
견고성 원칙에 따라 대소 문자를 구분하는 이메일을 수락하는 것이 좋습니다.
해결책:
- 대소 문자를 구분하여 이메일 저장
- 대소 문자를 구분하여 이메일 보내기
- 대소 문자를 구분하지 않고 내부 검색 수행
이는이 이메일이 이미 존재하는 경우 user@x.com을 의미합니다.
... 다른 사용자가 와서이 이메일을 사용하려고합니다 : USER@x.com
... 대소 문자를 구분하지 않는 검색 로직이 "이메일이 이미 존재합니다"오류 메시지를 반환합니다.
이제 결정을 내 렸습니다 : 귀하의 경우에 그 솔루션이 적절합니까?
그렇지 않은 경우 대소 문자 구분 이메일 지원이 필요한 클라이언트에게 편의 수수료를 청구하고 user@x.com이 이미 존재하더라도 USER@x.com을 시스템에 허용하는 사용자 정의 논리를 구현할 수 있습니다.
이 경우 이메일 검색 / 검증 로직은 다음 의사 코드와 유사 할 수 있습니다.
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 + '"
}
이런 방식으로, 대부분 대소 문자를 구분하지 않지만 고객이 이러한 무의미한 이메일 시스템을 사용하는 경우이 지원에 대한 비용을 지불 할 수 있습니다.
ps ILIKE는 PostgreSQL 키워드입니다 : http://www.postgresql.org/docs/9.2/static/functions-matching.html