2009-07-09 30 views
19

Sử dụng sqlite3, nếu truy vấn của tôi làSqlite ràng buộc trong chuỗi chữ

SELECT * FROM table WHERE title LIKE '%x%'

Nó sẽ phù hợp với chuỗi có chứa x. Tôi muốn làm cho x một tham số bindable, như:

SELECT * FROM table WHERE title LIKE '%x?%'

Tuy nhiên, điều này không làm việc kể từ khi hình thức '' một chuỗi chữ. Có cách nào để thoát khỏi số ? trong chữ không? Tôi hiểu rằng tôi có thể xây dựng các thông số bindable để chứa các % và sau đó sử dụng

SELECT * FROM table WHERE title LIKE ?

nhưng điều này di chuyển trách nhiệm vào mã của tôi về mặt xử lý tiêm SQL chứ không phải là giao diện ràng buộc. Có một giải pháp đẹp hơn cho điều này?

Trả lời

34
SELECT * FROM table WHERE title LIKE '%' || ? || '%'; 
+5

Nó không chỉ là sqlite; '||' nằm trong chuẩn SQL; Postgres và Oracle theo dõi điều này. MySQL và MSSQL sử dụng 'CONCAT()' và '+' tương ứng, cả hai đều không chuẩn. – ephemient

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