programing

"SELECT DISTINCT"는 다른 경우를 무시합니다.

cafebook 2023. 8. 26. 12:15
반응형

"SELECT DISTINCT"는 다른 경우를 무시합니다.

MSSQL Server 2000이 테이블에서 고유한 값을 선택해야 한다는 문제가 있습니다(특정 열은 nvarchar 유형임).같은 값이 있을 수도 있지만, 예를 들어 (의사 코드)와 같은 경우는 다릅니다.

SELECT DISTINCT * FROM ("A", "a", "b", "B")

돌아올 것입니다

A,b

하지만 저는 (그리고 기대합니다)

A,a,b,B

왜냐하면 그들은 실제로 다른 가치들이기 때문입니다.

이 문제를 어떻게 해결합니까?

데이터 정렬은 대소문자를 구분하지 않음으로 설정됩니다.

당신은 이런 것을 할 필요가 있습니다.

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as
From dbo.myTable

MS SQL은 확실하지 않지만 MySQL 또는 postgres에서는 다음을 사용합니다.BINARY이 작업을 위해.다음과 같이 열을 이진수로 캐스팅합니다.

SELECT DISTINCT BINARY(column1) from table1;

그냥 바꾸기column1그리고.table1당신의 스키마에 따라.

MySQL 5.7에서 사용할 수 있는 전체 예제는 다른 사용자에게도 사용할 수 있습니다.

SELECT DISTINCT BINARY(gateway) from transactions;

건배!

SELECT DISTINCT
   CasedTheColumn 
FROM
   (
   SELECT TheColumn COLLATE LATIN1_GENERAL_BIN AS CasedTheColumn
   FROM myTAble
   )FOO
WHERE
   CasedTheColumn IN ('A', 'a'...)

문제가 되는 열의 조합utf8-bin과 같은 이진법으로 설정해 보십시오.이 작업은 문 자체에서 수행하거나 테이블 구조를 직접 변경하여 수행할 수 있습니다(쿼리가 실행될 때마다 조회를 내부에 올바르게 저장하므로 조회를 매핑할 필요가 없음).

언급URL : https://stackoverflow.com/questions/2644851/select-distinct-ignores-different-cases

반응형