2017-09-21 51 views
0

표준 문자 옆에 위 첨자 문자가 포함 된 열을 비교하는 동안 SQL Server의 일부 문제 만 실행 중입니다. VARCHAR에서 열을 비교하는 한 예상대로 작동합니다. 다음 샘플 코드와 같이 NVARCHAR에서 일반 숫자와 첨자 번호는 동일하게 처리됩니다SQL Server의 일반 숫자 및 위 첨자 숫자를 포함하는 기호 비교

CREATE TABLE #uom 
(
    SYMBOL_N1 NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
, SYMBOL_N2 NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
, SYMBOL_V1 VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
, SYMBOL_V2 VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
) 

INSERT INTO #uom VALUES ('in²','in2','in²','in2') 

SELECT 
    CASE WHEN SYMBOL_N1 = SYMBOL_N2 THEN 1 ELSE 0 END AS N 
, CASE WHEN SYMBOL_V1 = SYMBOL_V2 THEN 1 ELSE 0 END AS V 
FROM #uom; 

--RESULTS 
--N = 1 
--V = 0 

우리는 또한 어떤 경우에는 국제 문자를 사용할 때, 유니 코드는 여기에 사용해야합니다.

누구나 두 값을 다르게 처리하도록 SQL Server를 만드는 방법을 알고 있습니까?

최저

, 스테판

답변

0

사용하는 바이너리는

SELECT *, 
    CASE WHEN SYMBOL_N1 COLLATE LATIN1_GENERAL_BIN = SYMBOL_N2 COLLATE LATIN1_GENERAL_BIN THEN 1 ELSE 0 END AS N 
, CASE WHEN SYMBOL_V1 = SYMBOL_V2 THEN 1 ELSE 0 END AS V 
FROM #uom; 
+0

멋진 대조. 그게 .... 아주 고마워! –

+0

이 메서드는 문자열 간의 이진 일치를 수행하므로 액센트 나 대/소문자를 구분하는 데 문제가있을 수 있습니다. – MtwStark