문제

테이블 뷰 (데이터베이스에 링크)와 검색 표시 줄이 있습니다. 검색 창에 무언가를 입력하면 데이터베이스에서 빠른 검색을 수행하고 입력 할 때 결과를 표시합니다.

쿼리는 다음과 같습니다.

SELECT * FROM MyTable WHERE name LIKE '%NAME%'

ASCII 문자 만 사용하는 한 모든 것이 잘 작동합니다. 내가 원하는 것은 ASCII 문자를 입력하고 동등한 인력과 일치하는 것입니다. 예를 들어, "Alizee"를 입력하면 "Alizée"와 일치 할 것으로 기대합니다.

쿼리 로케일에 민감하게 만들 수있는 방법이 있습니까? SQL의 Collate 옵션에 대해서는 빨간색이지만 SQLITE에는 사용되지 않는 것 같습니다. 또한 iPhone SDK 3.0이 "로컬로 된 Collation"을 가지고 있다고 생각하지만 이것이 무엇을 의미하는지에 대한 문서를 찾을 수 없었습니다. .

고맙습니다.

도움이 되었습니까?

해결책

이것을 해결하기위한 몇 가지 옵션이 있습니다.

  1. 실행하기 전에 쿼리의 모든 악센트 숯을 교체하십시오.

    "Psychédélices"=> "Psychedelices"
    "à Contre-Courant"=> "Contre Courant"
    "tempête"=> "tempete"
    등.

    그러나 이것은 입력에 대해서만 작동하므로 데이터베이스 자체에 숯이 강조되어서는 안됩니다. 간단한 해결책이지만 완벽하지 않습니다.

  2. 타사 라이브러리, 즉 ICU (아래 링크)를 사용합니다. 그래도 iPhone에 가장 적합한 선택인지 확실하지 않습니다.

  3. 비교를 수행 할 하나 이상의 사용자 정의 C 기능을 작성합니다. 아래 링크에서 더.

StackoverFlow에 대한 몇 가지 게시물이 다양한 옵션을 논의합니다.
지정된 로케일과 함께 sqlite3에서 텍스트를 정렬하는 방법은 무엇입니까?
SQLITE에 대한 사례에 민감한 UTF-8 문자열 Collation (C/C ++)
SQLITE에서 악센트/디아크리트 둔감 검색을 구현하는 방법은 무엇입니까?

또한 몇 가지 외부 링크 :
C/C ++에서의지지와 같은 SQLITE 및 기본 유니 코드
sqlite 케이스 및 악센트 무감각 검색

다른 팁

SQL에 대해서는 확실하지 않지만 확실히 사용할 수 있다고 생각합니다. NSDiacriticInsensitivePredicateOption 메모리 내 NSStrings를 비교합니다.

예를 들어 검색하는 문자열로 가득 찬 Nsarray가 있습니다. 당신은 NSDiacriticInsensitivePredicateOption 비교 옵션 및 성공적인 경기를 표시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top