Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je but sur le problème suivant depuis quelques jours, et je ne vois pas comment le résoudre. Je vais essayer d'être le plus clair possible afin que vous me donniez votre avis s'il vous plait.
J'ai deux tables :
- table DOSSIER avec comme champs DOSSIER_ID, DOSSIER_INFO, .... Le champ DOSSIER_INFO contient des textes du type "problème urgent à résoudre pour telle date"
- table KEYWORDS avec les champs KEYWORD_ID, KEYWORD (par exemple: urgent), KEYWORD_VAL
Ce que je souhaite pouvoir :
1) Au chargement de la table DOSSIER, pour chaque dossier, vérifier s'il y a des infos complémentaires (DOSSIER_INFO non vide)
2) Si oui, parcourir les infos complémentaires
3) Si dans les infos complémentaires il y a un mot clé (KEYWORD) référencé dans la table KEYWORDS, alors ajouter un champ KEYWORD_ID à la table DOSSIER et y affecter la valeur correspondante
4) Si pas de mot clé dans les infos complémentaires affecter la valeur 0 au champ KEYWORD_ID de la table dossier
Est-ce envisageable?
Si oui, comment procéder?
Merci par avance,
N'hésitez pas à me demander des précisions si je n'ai pas été assez clair.
C'est logique car vous n'avez pas copié toute l'expression.
wildmatch prend en argument uen chaîne et uen suite de motifs et renvoie le numéro du premier motif matchant s'il y en a un, Null() sinon
La chaîne matching_expression prend en charge la correspondance de la chaîne DOSSIER_INFO avec les motifs génrés par KEYWORD mais, si rien ne matche, elle renvoie Null(). C'est pour cela que j'ai rajoputé un motif '*' qui s'unifie avec toute chaîne de sorte que wildmatch renvoie un nombre. Il ne reste plus qu'à rajouter la valeur 0 dansle pick, après return_expression d'où le code à modifier en gras:
pick( wildmatch( CASE_ADDITIONAL_INFO , $(matching_expression) , '*' ), $(return_expression) , 0 ) as KEYWORD_ID
Merci Amand,
Cela fonctionne aussi, et en plus ça m'a permis de voir l'utilisation des flags.
Je conserve la solution de Richard qui est plus proche de ce que j'avais déjà écrit.
Merci encore,
Jérôme
Effectivement mon oubli du 0 en fin d'expression était la raison du problème.
Un grand merci à vous Richard pour la qualité et la rapidité de vos réponses!
Petite précision Richard, wildmatch renvoie 0 si aucun motif ne matche...Et non pas null()
Pour gérer les motifs qui ne matchent pas une alternative au '*' est une expression du style
pick(wildmatch(motif1, motif2,...,motifn)+1, defaultvalue, valuemotif1,....,valuemotifn)
Le principe reste le même
Exact, je me suis mélangé les pinceaux entre Wildmatch seul et la combinaison pick( wildmatch( _ ) , _ )