[sql] SQL 대소 문자 구분 문자열 비교

각 문자열의 경우가 동일한 경우에만 비교가 이루어 지도록 문자열을 비교하는 방법은 무엇입니까? 예를 들면 다음과 같습니다.

Select * from a_table where attribute = 'k'

… ‘K’속성을 가진 행을 반환합니다. 나는이 행동을 원하지 않는다.



답변

Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS 

트릭을 했어.


답변

이 구문을 사용하여 해당 속성을 대소 문자를 구분 하여 변환 할 수도 있습니다 .

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS

이제 검색은 대소 문자를 구분 합니다.

해당 열을 대소 문자를 구분하지 않게하려면 다음을 사용하십시오.

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS


답변

VARBINARY (Max Length)로 열을 쉽게 변환 할 수 있습니다. 길이는 결함 비교를 피할 것으로 예상되는 최대 값이어야합니다. 길이를 열 길이로 설정하면 충분합니다. 트림 열은 공간이 의미가 있고 테이블 열에서 값을 갖는 것을 제외하고 실제 값을 비교하는 데 도움이됩니다. 이것은 간단한 샘플이며 열 값을 자른 다음 변환 및 비교합니다.

CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))

이 도움을 바랍니다.


답변

다른 대안으로 HASHBYTES를 사용할 수 있습니다.

SELECT *
FROM a_table
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')


답변

당신은 정의 할 수 있습니다 attributeBINARY사용하거나 INSTR또는 STRCMP검색을 수행 할 수 있습니다.


답변