Wie die Sqlite3 LIKE-Anweisung verwenden,
-
27-09-2019 - |
Frage
Ich habe Probleme eine dynamische LIKE-Anweisung in meinem Projekt ausgeführt wird: Diese Abfrage funktioniert wie ein Charme und gibt alle Artikel mit einem ‚t‘ in ihrem Namen:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";
Wenn ich versuche, dies zu tun, dynamisch ich keine Fehler, aber nur ein leeres Ergebnis. Es scheint, dass der Wert null ist. Ich versuche, einen String-Wert ‚s‘ zu binden, das gibt einen richtigen Wert
NSLog(@"bbc_ : search menu items from db based on: %@",s);
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [s UTF8String],-1,SQLITE_TRANSIENT);
Wie soll ich binden dieser Wert anstelle der Verwendung:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
Lösung
gefunden Nur eine große Erklärung unter http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.html
Ich änderte folgende Zeilen:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";
und
NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT);
Andere Tipps
Sie können eigentlich nur sagen,
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%t%'";
(Beachten Sie die Single-%
s)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow