Recherche par mots clés avec ORACLE
Cinamon
-
Ner0lph Messages postés 91 Statut Membre -
Ner0lph Messages postés 91 Statut Membre -
Bonjour,
J'ai à priori un soucis de synthaxe avec ma procédure PL/SQL de recherche par mots clés dans ma table LIVRE. Ma procédure est de la forme:
create or replace procedure rechercher(mot1 VARCHAR) IS
monTitre VARCHAR(50);
BEGIN
SELECT titre INTO monTitre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Aucun livre ne correspond à votre
recherche');
WHEN others THEN
NULL;
END rechercher;
/
LE problème, c'est que ma requete ne trouve jamais aucun livre !! Même si en paramêtre je rentre un mot qui figure dans le titre de mon livre ! Y a t'il un pb dans ma façon d'écrire ma requete ???
Merci pour votre aide !!!
Si ça peut être utile ma table livre est de la forme :
create table livre(
id_livre number not null primary key,
titre varchar(50)
);
J'ai à priori un soucis de synthaxe avec ma procédure PL/SQL de recherche par mots clés dans ma table LIVRE. Ma procédure est de la forme:
create or replace procedure rechercher(mot1 VARCHAR) IS
monTitre VARCHAR(50);
BEGIN
SELECT titre INTO monTitre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Aucun livre ne correspond à votre
recherche');
WHEN others THEN
NULL;
END rechercher;
/
LE problème, c'est que ma requete ne trouve jamais aucun livre !! Même si en paramêtre je rentre un mot qui figure dans le titre de mon livre ! Y a t'il un pb dans ma façon d'écrire ma requete ???
Merci pour votre aide !!!
Si ça peut être utile ma table livre est de la forme :
create table livre(
id_livre number not null primary key,
titre varchar(50)
);
A voir également:
- Recherche par mots clés avec ORACLE
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche par image - Guide
- Retrouver un film avec des mots - Télécharger - Divers TV & Vidéo
- Telecharger windows 8.1 avec clé d'activation gratuit - Guide
- Je recherche une chanson - Guide
3 réponses
Est-ce qu'en faisant la requête manuellement, ça marche ?
SELECT titre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';
en changeant nomTitre et mot1.
Ce serait pas un problème de majuscule/minuscule, puisque tu changes montitre en majuscule
et pas mot1 (il est peut-être déjà en majuscule ???)
SELECT titre
FROM livre
WHERE UPPER(monTitre) LIKE '%mot1%';
en changeant nomTitre et mot1.
Ce serait pas un problème de majuscule/minuscule, puisque tu changes montitre en majuscule
et pas mot1 (il est peut-être déjà en majuscule ???)
Hello,
Déterrage, et réponse d'un pro, au bout de 17 ans… ^_^'
Le problème vient de ton LIKE : il faut mettre « LIKE '%' || mot1 || '%' » et non « LIKE '%mot1%' ». En effet, il faut concaténer le nom du paramètre pour former la chaine de recherche, sinon c'est comme si tu cherchais la chaine 'mot1'.
En espérant que ça puisse aider des gens.
Bisous.
SELECT titre
FROM livre
WHERE UPPER(titre) LIKE UPPER('%fl%');
MAIS le probleme (à savoir pas de résultats au final) persiste qd j'intègre le code à la procédure de la façon suivante :
create or replace procedure rechercher(mot1 VARCHAR) IS
monTitre VARCHAR(50);
BEGIN
SELECT titre INTO monTitre
FROM livre
WHERE UPPER(monTtitre) LIKE UPPER('%mot1%');
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.PUT_LINE('Aucun livre ne correspond à votre recherche');
WHEN others THEN
NULL;
END rechercher;
/
Je ne suis pas sûr de la façon dont je récupère 'mot1' et monTitre, est-ce bien correct ?
Tu as testé ta requête en dehors de PL/SQL ? Directement en SQL sur ta base ?
Si elle marche, j'ai plus de solution...