2012-06-26 1 views
1

는 SQL Server의 경우와 민감한 비교를하는 경우 를 구분 스키마 개체 이름을 혼합하는 방법은 없나요?대소 문자를 구분 스키마 개체 이름

내 데이터베이스의 모든 문자열 열은 CS (대소 문자 구분) 데이터 정렬을 사용하지만 쿼리에서 일치하지 않는 스키마 개체 이름을 사용하는 레거시 응용 프로그램에서 관리하므로 데이터베이스 수준에서 CS 데이터 정렬로 전환 할 수 없습니다 만든다.

select count(*) from PeRsOn where 'A' = 'a' 

답변

3

당신은 또한 다음 대신 인스턴스, 데이터베이스에 지정된 사람의 사용되는 리터럴 데이터 정렬을 지정할 수 있습니다 :

예를 들어, 나는 성공적 0 실행하고 반환하는 다음과 같은 질의를 필요로한다 또는 열 수준 :

SELECT count(*) 
FROM PeRsOn 
WHERE 'A' COLLATE Latin1_General_CS_AS = 'a' COLLATE Latin1_General_CS_AS 
+0

흥미롭게도, 나는 그것에 대해 몰랐습니다. 불행히도 레거시 애플리케이션은 DB에 독립적이므로이 MSSQL 특정 구문을 사용할 수 없습니다. 실제로 내가 제시 한 예제 쿼리는 기본 DB가 대/소문자를 구분하는지 여부를 결정하는 데 사용되는 일반적인 접근 방식입니다. –

+0

@NathanBaulch - 대/소문자를 구분하도록 DB 데이터 정렬을 변경하거나 대/소문자를 구분하기 위해 쿼리에 명시 적 'COLLATE' 절을 추가해야합니다. 대소 문자를 구분하는 다른 방법은 없습니다. –

+0

그건 내가 두려워했던거야. 데이터베이스 레벨에서 스키마 개체 이름과 비교 감도를 독립적으로 구성하는 방법을 찾고 싶습니다. –