Essayer d'exécuter la clause LIKE dans sqlite3 sur iPhone
-
20-12-2019 - |
Question
J'essaie d'exécuter la clause LIKE dans ma requête sqlite3, c'est-à-dire
sqlStatement = [NSString stringWithFormate;@"select * from table_name where column_name like '%"+%@+"%'",title];
Ici titre est un type NSString.ayant des valeurs comme 6 Kt ou 10 Kt ou 14 Kt ou 18 Kt
Et en nom de colonne j'ai des valeurs comme celle-ci (6 kt, 10 kt, 14 kt) dans une seule instruction
|------------------------|
| column_name |
|------------------------|
| 6 Kt, 10 Kt, 14 Kt |
| -------------------- |
| 10 Kt, 18 Kt, 22 Kt |
| --------------------- |
| 6 Kt, 10 Kt, 24 Kt |
| --------------------- |
| 6 Kt, 14 Kt, 22 Kt |
| ---------------------- |
| 6 Kt, 22 Kt, 24 Kt |
| -----------------------|
et j'essaye une autre requête comme celle-ci :
sqlStatement = [NSString stringWithFormat:@"select * from jewelryInfo where karat like '%@%%'",title];
avec la valeur du titre = 6 Kt.
IL donne le valeurs d'un rang commençant par 6 Kt
mais quand j'essaye d'utiliser 18 kt ou 22 kt comme valeur pour titre
ça ne me donne aucun résultat
Je pense qu'il s'agit uniquement de vérifier la première valeur d'une ligne de cette colonne.
s'il vous plaît aidez-moi, merci
La solution
Vous devez ajouter un %
avant la requête.De plus, vous devez utiliser la requête suivante :
sqlStatement = [NSString stringWithFormat:@"select * from jewelryInfo where ', '||karat like '%% %@%%'",title];
pour faire correspondre les éléments au milieu, au début ou à la fin de la liste et faire correspondre 6 mais pas 16.