Transact-SQL 쿼리에서 문자열 앞에 N 접두사


41

Transact-SQL 쿼리에서 문자열 앞에 N 접두사를 언제 사용해야합니까? 다음과 같은 쿼리를 사용하여 결과를 얻지 못하는 데이터베이스 작업을 시작했습니다.

SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%'

나는에 패턴을 변경할 때까지 N'%а_pattern%'. 과거에는이 접두사를 추가 할 필요가 없었기 때문에 궁금합니다. a_field로 정의 nvarchar(255)되었지만 그 이유는 다른 것으로 생각합니다.

답변:


31

다음 기사에는 질문에 대한 좋은 정보가 있습니다. 짧은 대답은 사용중인 유니 코드 열과 비 유니 코드 문자열 리터럴 사이에 유형이 일치하지 않는다는 것입니다. KB 기사에서 N 접두사를 생략해도 여전히 작동하는 경우가 있지만 데이터베이스의 코드 페이지 및 데이터 정렬 설정에 따라 다릅니다. 이전에 no-prefix 방법으로 성공한 경우 동작의 변화를 설명 할 수 있습니다.

https://support.microsoft.com/en-us/kb/239530


6

이는 후속 문자열이 유니 코드임을 나타냅니다 (N은 실제로 자국어 문자 세트를 나타냄). 이는 CHAR, VARCHAR 또는 TEXT 대신 NCHAR, NVARCHAR 또는 NTEXT 값을 전달 함을 의미합니다. 이러한 데이터 유형을 비교하려면 기사 # 2354를 참조하십시오.

유니 코드는 일반적으로 중국어와 같은 영어 및 서유럽 코드 페이지를 넘어 확장되는 코드 페이지를 용이하게하도록 설계된 데이터베이스 응용 프로그램에서 사용됩니다. 유니 코드는 확장 문자 세트가 여전히 데이터베이스 열에 "적합"할 수 있도록 설계되었습니다.


3

N- 접두사가 SQL Server에 문자열을 유니 코드 값으로 처리하도록 지시합니다. nvarchar 열은 유니 코드이므로이 열에 액세스 할 때이 구문을 사용해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.