2010-11-30 8 views
1

안녕하세요, 내 데이터베이스 (SQL Server)에서 문자가 ª 인 쿼리를 실행하여 모든 행을 찾으려고합니다. (가) 둘 다 행의 다른 번호를 반환하고, (B) 그들은 지정된 문자가없는 행을 반환됩니다 SQL 서버에서 유니 코드 문자를 비교하는 방법은 무엇입니까?

SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\xE9]%',question) > 0; 

SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\u00E9]%',question) > 0; 

는하지만 두 가지 문제를 발견했다.

정규 표현식을 구성하고 유니 코드를 비교하는 방법이 맞습니까?

EDIT :

질문 열 nvarchar 데이터 유형을 사용하여 저장된다. 다음 쿼리는 올바른 결과를 제공합니다.

SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'; 

답변

4

SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'를 사용할 수 있습니까?

NB : Likepatindex do 정규 표현식을 허용합니다.

SQL Server 패턴 구문 [\xE9]match any single character within the specified set을 의미합니다. 즉 \, x, E 또는 9과 일치합니다. 따라서 다음 문자열 중 하나가 해당 패턴과 일치합니다.

  • "코끼리"
  • "축"
  • "99.9"
+0

그래서 제 한 \ 0,0, E 또는 9와 매칭되는? 실제로 쿼리에서 유니 코드를 지정하는 방법이 있습니까? – rkg

+0

@Ravi - 어떤 이유로 든 문자 그대로'WHERE patindex (N '%'+ NCHAR (0xE9) + '%', question)> 0 ' % é % ', question)> 0' –

+0

감사합니다 마틴. 이것은 정말로 도움이되었습니다. 나는 PATINDEX가 정규 표현식을 지원한다는 인상을 받았다. – rkg

관련 문제