Requete jdbc et chaine de caractere
lydia
-
BadGuitarist Messages postés 373 Statut Membre -
BadGuitarist Messages postés 373 Statut Membre -
bonsoir,
je suis coincé sur un truc depuis toute a lheure et jespere que vous pouvez maider.
je veux faire une requete qui me sort de la base les enregistrements dont le champ dateP contient la chaine de caractere saisie par l'utilisateur.
mais il faut que je teste sur le 6éme et 7éme caractere de la chaine du champ.
donc je me suis dis je fais un Like mais j'ai un probleme avec les guillemet que j'ai pas pu resoudre meme avec Replace.
voici la requete.
String req2 = "Select MontantP , MargeP, NatureP, OrigineP, DateP
from Pret
where DateP Like '_____'"+mois.replace("''" , "'")+"'___" ;
je fais ca car la date et sous la forme de 0000-00-00
donc quand l'utilisateur veu rechercher par le mois de fevrier et donc 02, je veux que la requete test sur le 6eme et 7eme caractere et renvoi les pret du mois du fevevrier.
SVP si quelqu'u peut maider . merci davance
je suis coincé sur un truc depuis toute a lheure et jespere que vous pouvez maider.
je veux faire une requete qui me sort de la base les enregistrements dont le champ dateP contient la chaine de caractere saisie par l'utilisateur.
mais il faut que je teste sur le 6éme et 7éme caractere de la chaine du champ.
donc je me suis dis je fais un Like mais j'ai un probleme avec les guillemet que j'ai pas pu resoudre meme avec Replace.
voici la requete.
String req2 = "Select MontantP , MargeP, NatureP, OrigineP, DateP
from Pret
where DateP Like '_____'"+mois.replace("''" , "'")+"'___" ;
je fais ca car la date et sous la forme de 0000-00-00
donc quand l'utilisateur veu rechercher par le mois de fevrier et donc 02, je veux que la requete test sur le 6eme et 7eme caractere et renvoi les pret du mois du fevevrier.
SVP si quelqu'u peut maider . merci davance
A voir également:
- Requete jdbc et chaine de caractere
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Caractère ascii - Guide
- Caractere vide - Guide
- Plus de chaine tv - Guide
1 réponse
Bonsoir Lydia,
Si ton champ dateP est de type date,
plutôt que triturer des caractères issus d'une conversion ... bref source d'erreur et
d'incompréhension,
pourquoi n'utilises-tu pas les fonctions de dates de ton SGBD ?
Par exemple, sous Oracle, tu pourrais faire cela (une des nombreuses solutions possibles) :
Select MontantP , MargeP, NatureP, OrigineP, DateP
from Pret
where TO_CHAR(DateP, 'MM') = moisSaisiParUtilisateur;
Ainsi, tu n'es pas dépende du format de Date. C'est le SGBD qui gère l'information.
Par contre, si tu veux tout de même triturer des caractères, généralement les langages ont des fonctions de traitement de caractères telles :
sous-chaine(chaineInitiale, debut, fin)
ou
sous-chaine(chaineInitiale, debut, longueur)
qui retourne la nouvelle chaine.
Sous Oracle, SUBSTR(dateP, 6, 2) devrait te retourner le mois si dateP est une chaine de caractères respectant le format YYYY-MM-DD.
A bientôt pour la suite.
Si ton champ dateP est de type date,
plutôt que triturer des caractères issus d'une conversion ... bref source d'erreur et
d'incompréhension,
pourquoi n'utilises-tu pas les fonctions de dates de ton SGBD ?
Par exemple, sous Oracle, tu pourrais faire cela (une des nombreuses solutions possibles) :
Select MontantP , MargeP, NatureP, OrigineP, DateP
from Pret
where TO_CHAR(DateP, 'MM') = moisSaisiParUtilisateur;
Ainsi, tu n'es pas dépende du format de Date. C'est le SGBD qui gère l'information.
Par contre, si tu veux tout de même triturer des caractères, généralement les langages ont des fonctions de traitement de caractères telles :
sous-chaine(chaineInitiale, debut, fin)
ou
sous-chaine(chaineInitiale, debut, longueur)
qui retourne la nouvelle chaine.
Sous Oracle, SUBSTR(dateP, 6, 2) devrait te retourner le mois si dateP est une chaine de caractères respectant le format YYYY-MM-DD.
A bientôt pour la suite.