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

Développement SQL Server Discussion :

Vérifier que le format d'un varchar respecte : aa_bb_cc


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut Vérifier que le format d'un varchar respecte : aa_bb_cc
    Bonjour à tous,

    J'ai une variable @s de type varchar. Par une requête SQL, je souhaiterais savoir si elle contient au moins 3 parties non vides (de caractères alpha, chiffres, symboles...) séparés par 2 underscores : a_b_c

    Je suis arrivé à vérifier la présence de 2 underscores et au moins 5 caractères au total :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    len(@s) >= 5 and len(@s) - len(replace(@s, '_', '')) >= 2
    Mais cela ne me garantit pas que les 3 parties sont non vides. La variable peut valoir ceci, à tort : abcefg__

    Idem pour ce code :
    Je souhaiterais ne pas avoir recours aux SQL CLR (regex), ni à une usine à gaz (gros curseur...). Et lister tous les caractères possibles et imaginables dans les parties non vides ne me parait pas exploitable.

    Merci bcp d'avance

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    dans un like :
    % signifie 0 à n caractere(s)
    _ signifie 1 et 1 seul caractère

    à partir de la :
    _% signifie 1 caractère ou plus, mais au moins 1
    __% signifie 2 caracteres ou plus...

    donc ton problème doit se résoudre de la façon suivante (pas testée):
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @s LIKE '_%[_]_%[_]_%'

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    NON !!! pas bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE '_%?__%?__%' ESCAPE '?'
    Vous pouvez remplacer le caractère d'échappement par un caractère autre, y compris non imprimable.

    Ceci est du pur SQL normatif.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    NON !!! pas bon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE '_%?__%?__%' ESCAPE '?'
    Vous pouvez remplacer le caractère d'échappement par un caractère autre, y compris non imprimable.

    Ceci est du pur SQL normatif.

    A +
    Joli

  5. #5
    Membre actif
    Inscrit en
    Octobre 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 111
    Par défaut
    La grande classe, merci
    Mais je ne comprends pas en quoi la solution de aieeeuuuuu n'est pas bonne, même après tests... merci de m'éclairer

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Elle est correcte pour SQL-Server mais n'est pas normative.

    C'est comme utiliser isnull au lieu de coalesce.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2006, 09h17
  2. Réponses: 3
    Dernier message: 02/03/2006, 21h54
  3. Comment vérifier que la valeur d'un champ soit unique?
    Par le lynx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/05/2005, 14h11
  4. Réponses: 11
    Dernier message: 27/03/2005, 15h13
  5. vérifier que ce sont que des chiffres ?
    Par netwebzone dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/12/2004, 11h32

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