Disons avoir une colonne avec des valeurs
"Html", "Java", "JQuery", "Sqlite"
et si l'utilisateur entre
"Java est mon langage de programmation préféré"
alors le résultat devrait être
1 ligne sélectionnée avec la valeur "Java"
car la phrase saisie commence par "Java"
mais si l'utilisateur saisit
"Ma base de données d'application est dans Sqlite"
alors la requête doit retourner vide.
0 ligne sélectionnée
car la phrase saisie ne commence pas par "Sqlite".
J'essaye la requête suivante:
SELECT * FROM demo where 'Java is my favorite programming language' like demo.name; // Fails
mais si entrez long texte alors il échoue
SELECT * FROM demo where 'Java' like demo.name; // work
5 Réponses :
Il suffit de mettre le nom de la colonne sur le côté gauche de l'opérateur like
, et de concaténer un caractère générique sur le côté droit de votre clavier de chaîne:
select * from demo where name like ? || %' ;
Vous pouvez rendez-le plus générique comme:
select * from demo where name like 'Java%' ; -- or like 'Sqlite%' etc
où ?
est un paramètre de liaison qui représente la valeur fournie par l'utilisateur (vous pouvez également concaténer avec le caractère générique dans votre application avant de passer le paramètre).
Je ne peux pas contrôler quel utilisateur va entrer. comment savoir si l'utilisateur est entré en Java
Je pense que vous voulez quelque chose comme ceci:
SELECT * FROM demo WHERE yourText LIKE demo.name || '%' ;
Vous devez remplacer +
par ||
pour concaténer les chaînes.
@Eritrean merci j'ai pensé + va concaténer les cordes
Vous pouvez faire votre requête comme ceci
Select * from SearchPojo where name GLOB '*' || :namestring|| '*'"
Je ne sais pas si j'ai le problème mais ...
Vous pouvez interroger ces valeurs (Html, Java, JQuery, Sqlite) les mettre dans une collection, comme List, puis saisir l'entrée de l'utilisateur et la vérifier: p>
List<String> values ... // Html, Java, JQuery, Sqlite for (String value : values) { if (userInput.contains(value) { // print System.out.println("1 row selected with value \"Java\"); } }
Il prend en charge les cas où l'utilisateur saisit plus d'une option.
Concaténez votre colonne avec un caractère générique:
SELECT * FROM demo where 'Java is my favorite programming language' like demo.name || '%';