IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

récupérer les champs Varchar2 correspondant à un format date donné


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut récupérer les champs Varchar2 correspondant à un format date donné
    Bonjour,

    je souhaiterais récupérer avec une seule requête toutes les lignes d'une table nommée TTAB_REMBOURS_BCE_CV2_LDR dont le champ BCE_DT_ECHEANCE_LDR (qui est un varchar2(8)) ne correspond pas au format date 'YYYYMMDD'

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    quelle est ta version?

    tu peux déjà tenter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from TTAB_REMBOURS_BCE_CV2_LDR 
    where length(BCE_DT_ECHEANCE_LDR ) != 8
    or ltrim(BCE_DT_ECHEANCE_LDR,'0123456789') is not null
    bon, si tu as des 31 février, il te faudra sans doute une autre approche

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    bon, si tu as des 31 février, il te faudra sans doute une autre approche
    ou des 32 janvier!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    Je suis sur une base 9.2.0.8

    J'avais pensé au lentgh mais pas au ltrim.

    Avant je bouclais sur les données de ma table et je faisais le teste suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    BEGIN
     
    		     SELECT TO_DATE(CUR_TAB_RMB_REC.BCE_DT_ECHEANCE_LDR,cstFormatDate)
     
    			 into v_dt_test
     
    		     FROM DUAL;
     
    		 EXCEPTION
     
    	    	 WHEN OTHERS THEN
     
    	  	     PCK_ANOMALIE.pInsertAnomalieTabAmo( PCK_ANOMALIE.rejTRmbDtEchFrmIncorr, CUR_TAB_RMB_REC.id_genere, CUR_TAB_RMB_REC.BCE_DT_ECHEANCE_LDR );
     
    			 v_nb_TAmoDtEchFrmIncorr := v_nb_TAmoDtEchFrmIncorr + 1;
     
    			 v_continuer := FALSE;
     
    		 END;
    Mais vu que j'ai plusieurs millions de lignes dans ma table en terme de perf c'était pas terrible.

    merci en tout cas

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Fais une fonction qui renvoie 1 ou 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FUNCTION F_VERIF (p_entree IN VARCHAR2)
    RETURN NUMBER
    IS
    v_date DATE;
    BEGIN
     v_date := TO_DATE(p_entree, 'YYYYMMDD');
     RETURN 1;
    EXCEPTION WHEN OTHERS THEN RETURN 0;
    END;
    Ensuite ta requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TATABLE WHERE F_VERIF(tonchamp) = 0

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Par défaut
    GENIALISSIME

    Je viens de tester ça marche super.

    La requête s'execute en 1minute et 36 secondes pour 10 millions de lignes.

    Merci


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les différentes années sur un format date
    Par Spaccio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/04/2008, 13h04
  2. Récupérer les champs d'une classe
    Par gudul dans le forum Delphi
    Réponses: 3
    Dernier message: 15/10/2006, 14h01
  3. [Access] Récupérer les champs commençant par ...
    Par paflolo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/02/2006, 10h35
  4. récupérer les champs mis à jour
    Par xave dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 14h40
  5. [Servlet] récupérer les champs d'une jsp
    Par phoebe dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/05/2004, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo