Requete jdbc et chaine de caractere

Fermé
lydia - 8 juin 2010 à 19:29
BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 - 9 juin 2010 à 01:33
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
A voir également:

1 réponse

BadGuitarist Messages postés 367 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 20 octobre 2013 27
9 juin 2010 à 01:33
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.
0