1
votes

Requête pour vérifier si nous avons une ligne qui commence par une chaîne d'entrée

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


0 commentaires

5 Réponses :


2
votes

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

? 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).


1 commentaires

Je ne peux pas contrôler quel utilisateur va entrer. comment savoir si l'utilisateur est entré en Java



3
votes

Je pense que vous voulez quelque chose comme ceci:

SELECT * FROM demo WHERE yourText LIKE demo.name || '%' ;


2 commentaires

Vous devez remplacer + par || pour concaténer les chaînes.


@Eritrean merci j'ai pensé + va concaténer les cordes



0
votes

Vous pouvez faire votre requête comme ceci

Select * from SearchPojo where name GLOB '*' || :namestring|| '*'"


0 commentaires

0
votes

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.


0 commentaires

1
votes

Concaténez votre colonne avec un caractère générique:

SELECT * FROM demo where 'Java is my favorite programming language' like demo.name || '%';


0 commentaires