2013-04-15 25 views
8

Cố gắng tạo truy vấn sẽ trả về kết quả trùng khớp nếu cột đã cho chứa văn bản ở bất kỳ đâu bên trong. Ví dụ: nếu tôi chuyển từ "thực sự", cột chứa văn bản "Đây là một dòng văn bản thực sự dài" sẽ khớp. Cho đến nay, các truy vấn của tôi chỉ trả về nếu nó khớp chính xác để nó chỉ khớp với một cột chứa "thực sự" và đó là nó.Truy vấn sqlite trên Android để đối sánh cột chứa văn bản

Tôi đã thử một vài cách nhưng cả hai dường như để trả lại kết quả tương tự:

cách đầu tiên (s là chuỗi Tôi đang đi qua trong):

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, KEY_TITLE + " LIKE '%" + s + "%' COLLATE NOCASE", null, null, null, null); 

cách Tiếp

String p_query = "SELECT COUNT(*) FROM data WHERE number=? COLLATE NOCASE"; 
+0

Chỉ với kiến ​​thức của tôi, bạn sẽ làm gì với đối tượng con trỏ? bạn sẽ xử lý dữ liệu được liên kết với nó như thế nào. Có thể là một câu hỏi lame nhưng tôi hầu như không 3 ngày tuổi để Sqlite/Cơ sở dữ liệu. – Ravi

Trả lời

26

Cố gắng tạo truy vấn sẽ trả lại kết quả nếu cột đã cho chứa văn bản ở bất kỳ đâu bên trong.

này làm việc cho tôi và đó là tham số:

Cursor cursor = mDb.query(DATABASE_TABLE, new String[] {KEY_TITLE}, 
     KEY_TITLE + " LIKE ?", new String[] {"%" + s + "%"}, 
     null, null, null); 

"Thật" là một từ đủ riêng biệt, nhưng nếu bạn đang tìm kiếm một cái gì đó như "băng" và không muốn " dice "," vice "," icecream ", v.v. bạn sẽ phải sử dụng các mẫu khác nhau như: "% " + s + " %"s + " %".

Hoặc sử dụng bảng FTS có mã số tokenizer, như Porter Stemming.

+0

Cảm ơn tác vụ này – Paul

+0

Chà. Bạn đã cứu tôi. Cảm ơn – Libin

Các vấn đề liên quan