0

バックエンドとして Sqlite を使用する iPhone アプリを開発しています。アプリに検索機能を実装したいので、SQL クエリを使用しました。大文字と小文字を区別する方法で検索を実装したい.次のクエリまたはデータのフェッチを使用しました。

SELECT data FROM table where data LIKE 'A%' ORDER BY ID ASC

Sqlite は大文字と小文字を区別しないため、「a」と「A」で始まるデータを取得しています。私の要件を満たす代替オプションは、取得したコンテンツをコード内で表示する前にフィルタリングすることです。そのために NSPredicate を試しましたが、大文字と小文字を区別しない方法でも機能します。これは私のコードです..

NSPredicate *pred = [NSPredicate predicateWithFormat:@"self BEGINSWITH[c]  %@",[NSString stringWithFormat:@"%c",[filter characterAtIndex:i]]];
NSArray *arr = [arrayComponent filteredArrayUsingPredicate:pred];

これに対する解決策はありますか?

4

3 に答える 3

6
SELECT * FROM a WHERE name glob 'A*'

SQLフィドルを参照してください

http://sqlfiddle.com/#!7/18215/1

于 2013-06-19T06:43:55.167 に答える
1

あなたの環境でステートメントを使用できるかどうかはわかりませんがPRAGMA、次のようなオプションがあります。

PRAGMA case_sensitive_like = true;

PRAGMA ステートメントは、SQLite に固有の SQL 拡張機能であり、SQLite ライブラリの操作を変更するために使用されます。case_sensitive_like を有効にすると、大文字と小文字が区別されます。たとえば、'a' LIKE 'A' は false ですが、'a' LIKE 'a' は true です。

ドキュメントはこちら: http://www.sqlite.org/pragma.html#pragma_case_sensitive_like

于 2013-06-19T06:33:02.473 に答える
-1

あなたに役立つかもしれない別の答えを見つけました:

collat​​e nocase フィールドを使用した SQLite の大文字と小文字を区別する検索

COLLATEつまり、次のコマンドを使用して照合を変更する必要があります。

http://www.sqlite.org/lang_expr.html#collat​​eop

編集これを試してください(上記の他の投稿から):

SELECT data FROM table where data LIKE 'A%' ORDER BY ID ASC COLLATE BINARY
于 2013-06-19T06:37:21.550 に答える