Objective-C 에서는 % 가 특별한 문자로 인식되는데다가, 쿼리문을 bind 해서 처리하려니 이것저것 걸리는 것이 많더군요.
일단, 키워드를 % 로 감싸주는 방법입니다.
NSString *keyword = @"keyword";
NSString *wildcardKeyword = [NSString stringWithFormat:@"%@%%", keyword];
// 위의 방법은 키워드%가 되겠습니다.
NSString *wildcardKeyword = [NSString stringWithFormat:@"%%%@%%", keyword];
// 위의 방법은 %키워드%가 되겠습니다.
적당히 와일드카드 검색을 위한 키워드의 조작이 끝났으면, 쿼리문을 작성합니다.
const char *query = "SELECT * FROM TABLE WHERE FIELD1 LIKE ?001 OR FIELD2 LIKE ?002";
여기서 ?001과, ?002에 키워드를 바인딩할겁니다. ?001, ?002 양쪽에 '(콤마)가 없음을 유의하세요.
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(database, query, -1, &stmt, nil) == SQLITE_OK) {
sqlite3_bind_text(stmt, 1, [wildcardKeyword UTF8String], -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, [wildcardKeyword UTF8String], -1, SQLITE_STATIC);
// 이하생략
하면 할수록 오묘한 언어입니다. 크윽 ㅠ _ㅠ
'이럴땐, 이렇게! > 프로그래밍' 카테고리의 다른 글
| SQLite3에서의 AUTO_INCREMENT (0) | 2010/04/28 |
|---|---|
| Editplus에서 Java 연동 (0) | 2010/04/25 |
| Objective-C, SQLite3에서 Like 검색시 % 문제 (0) | 2010/04/21 |
| Objective-C에서 한글 초성, 중성, 종성 분리 (5) | 2010/04/19 |
| 간단한 CSS 팁 (1) | 2008/10/22 |
| FlashPlayer10 변경사항 및 문제점 (30) | 2008/10/16 |





댓글을 달아 주세요