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

Autres SGBD Discussion :

[Teradata] - Expression régulière pour déterminer suite de chiffres ou caractères identiques


Sujet :

Autres SGBD

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Teradata] - Expression régulière pour déterminer suite de chiffres ou caractères identiques
    Bonjour,

    Sous Teradata, je souhaiterai mettre en place une requête permettant de vérifier si le champ Field d'une longueur de 9 caractères d'une table T :
    - est composé d'une suite de chiffres ou de caractères identiques (exemple : 000000000, 111111111, aaaaaaaaa, BBBBBBBBB, ....)
    - contient un caractère accentué

    Concernant le critère "est composé d'une suite de chiffres ou de caractères identiques (exemple : 000000000, 111111111, aaaaaaaaa, BBBBBBBBB, ....)", j'ai pensé à utiliser la fonction regexp_similar de la manière suivante :
    regexp_similar(T.Field, '[0-9]{9}') or regexp_similar(upper(T.Field), '[A-Z]{9}')
    mais cela vérifie uniquement si le champ Field contient 9 chiffres ou 9 caractères et pas si ces chiffres/caractères sont identiques.
    Je n'ai pas réussi à trouver la syntaxe exacte permettant de vérifier si ces chiffres/caractères sont identiques.

    Pourriez-vous m'aider svp pour déterminer la syntaxe à utiliser pour les 2 critères ci-dessus (suite de chiffres/caractères identiques et présence d'un caractère accentué) ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 126
    Points : 28 520
    Points
    28 520
    Par défaut
    Partant de ton expression, je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regexp_similar(T.Field, '[' || SUBSTRING(T.Field FROM 1 FOR 1) || ']{9}')

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 938
    Points : 51 773
    Points
    51 773
    Billets dans le blog
    6
    Par défaut
    Pas besoin d'une expression régulières lourde et peu performante. Le LIKE et une UDF suffit.

    L'UDF :
    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
    CREATE FUNCTION test.REPLICATE (datum VARCHAR(32), len smallint)
    RETURNS VARCHAR(8000)
          LANGUAGE SQL
          DETERMINISTIC
          CONTAINS SQL
          SPECIFIC test.myudf
          RETURNS NULL ON NULL INPUT
          SQL SECURITY DEFINER
          COLLATION INVOKER
          INLINE TYPE 1
    Declare i int;
    Declare outval VARCHAR(8000);
    set i = 1;
    set outval = '';
    WHILE i <= len DO
       SET outval = outval || datum;
       SET i = i + 1;
       END WHILE;
    RETURN outval;
    La formule magique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MACOLONNE LIKE test.REPLICATE(SUBSTRING(MACOLONNE, 1, 1), CHARACTER_LENGTH(MACOLONNE))
    A +

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 02h59
  2. [RegEx] Expression régulière pour trouver des mots
    Par cbroissa dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2006, 00h39
  3. [RegEx] Simple expression régulière pour ereg_replace
    Par aurapp dans le forum Langage
    Réponses: 6
    Dernier message: 12/03/2006, 13h34
  4. Expression régulière pour récupérer le nom d'un fichier
    Par calimero2611 dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2006, 20h00
  5. Expression Régulière pour float
    Par zebiloute dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 15h03

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