각 문자열의 경우가 동일한 경우에만 비교가 이루어 지도록 문자열을 비교하는 방법은 무엇입니까? 예를 들면 다음과 같습니다.
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')
답변
당신은 정의 할 수 있습니다 attribute
로 BINARY
사용하거나 INSTR
또는 STRCMP
검색을 수행 할 수 있습니다.