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

Requêtes PostgreSQL Discussion :

Faire un test sur la longueur d'une chaîne de caractères


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut Faire un test sur la longueur d'une chaîne de caractères
    Bonjour,

    Je suis en train de migrer des requêtes utilisée dans une BDD SQL Server vers PostgreSQL, et rencontre les difficultés suivantes (je débute sous Postgre) :
    J'ai un champ "site_1", dans une table "tbl1" qui contient une chaine de caractères.
    Le champ "site_1" est de type text, mais je rencontre le même problème avec un champ de type char, ou varchar.

    La chaîne de caractère se trouvant dans "site_1" contient des lettres, un séparateur, et des chiffres, placés dans un ordre aléatoire.
    Le séparateur peut être un '-' ou un '_'.

    Lorsque le séparateur est un '-', les chiffres se trouvent avant le séparateur, et les lettres après.Il peut y avoir un '_' dans la chaîne à droite du '-'.
    Lorsque le séparateur est un '_', les chiffres se trouvent après le séparateur, et les lettres avant.

    Comme je n'ai besoin que des chiffres, j'ai fais 2 requêtes mise à jour du champs "site_1"
    Les chiffres contenus dans "Site_1", serviront de clé pour lier la table tbl1, avec une autre table.
    Je laisse volontairement le champs site_1 au format text car il est contenu dans une chaîne de caractère plus longue dans une colonne, de la seconde table.

    Les requêtes suivantes fonctionnent (j'ai volontairement retiré le nom du schéma):

    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
     
    UPDATE tbl1
    SET
    	site_1 = TRIM(SUBSTRING(site_1,1,strpos(site_1,'-')-1))
    WHERE
            TRIM(SUBSTRING(site_1,1,strpos(site_1,'-')-1))~ '^[0-9]*$'
    AND
    	strpos(site_1,'-')>0 ;
     
     
    UPDATE tbl1
    SET
    	site_1 = TRIM(SUBSTRING(site_1,strpos(site_1,'_')+1,char_length(site_1)-strpos(site_1,'_')))
    WHERE
           TRIM(SUBSTRING(site_1,strpos(site_1,'_')+1,char_length(site_1)-strpos(site_1,'_')))~ '^[0-9]*$'
    AND
    	strpos(site_1,'_')>0
    AND
    	strpos(site_1,'-')=0;
    Lorsque je saisi la requête ci-dessous (sous pgadmin ou directement sous psql, dans une console UNIX) pour vérifier la longueur de la chaîne contenue dans "site_1" (qui doit être comprise entre 6 et 10), j'ai un message d'erreur qui dit que la fontion char_lenght(txt), n'existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT site_1, char_lenght(site_1)nb FROM tbl1 WHERE nb<6 or nb>10 ;
    Si je remplace char_lenght par len, j'ai exactement le même message d'erreur.

    Comment afficher la longueur d'une chaîne de caractères dans une requête SQL, sous Postgre ?

    Merci pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Par défaut Erreur de sasi
    Citation Envoyé par kennely69 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT site_1, char_lenght(site_1)nb FROM tbl1 WHERE nb<6 or nb>10 ;
    Il suffit de saisir la bonne commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT site_1, char_length(site_1) as nb FROM tbl1 WHERE nb<6 or nb>10 ;
    Désolé pour le dérangement

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

Discussions similaires

  1. Trigger qui compte la longueur d'une chaîne de caractères
    Par miss lill dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/12/2013, 12h37
  2. Vérifier la longueur d'une chaîne de caractère
    Par Santcho dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2010, 17h29
  3. Question sur la longueur d'une chaîne et les label
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/01/2008, 16h41
  4. Limiter la longueur d'une chaîne de caractères
    Par stars333 dans le forum Langage
    Réponses: 5
    Dernier message: 28/03/2007, 23h34
  5. Réponses: 2
    Dernier message: 11/07/2006, 14h52

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