더북(TheBook)

함수 기반 인덱스를 사용하는 공통적인 이유 한 가지는 쿼리에서 대·소문자를 처리하기 위해서다. 액세스 SQL Server, MySQL은 기본적으로 대·소문자를 구분하지 않는다(MySQL은 악센트도 구분하지 않는다). 코드 2-26의 쿼리를 살펴보자.

코드 2-26 대·소문자를 구분하지 않는 RDBMS용 쿼리

SELECT EmployeeID, EmpFirstName, EmpLastName

FROM Employees

WHERE EmpLastName = ‘Viescas’;


 

실제로 저장된 값이 viescas, VIESCAS, Viescas, 심지어는 ViEsCaS더라도 액세스 SQL Server와 MySQL은 동일한 사람을 결과로 반환한다. 다른 DBMS는 이름이 정확히 Viescas로 입력된 사람만 찾는데, 이런 DBMS에서 대·소문자에 상관없이 결과를 얻으려면 코드 2-27과 같은 쿼리를 사용해야 한다.

코드 2-27 대·소문자를 구분하는 RDBMS용 쿼리

SELECT EmployeeID, EmpFirstName, EmpLastName

FROM Employees

WHERE UPPER(EmpLastName) = ‘VIESCAS’;


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.