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 :

select sur une série de n caractères identiques


Sujet :

Développement SQL Server

  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut select sur une série de n caractères identiques
    Bonjour

    Je coince un peu sur une requête. Mais elle n'est peut-être pas possible.
    En fait je cherche à sélectionner toutes les lignes dont une colonne contient une valeur texte avec le même caractères répété de 1 à n fois. Par exemple, toutes les lignes de ma table pour lesquelles la colonne 'chaine' contient '-' ou '--' ou '---', etc.

    Avec une expression régulière, ça donnerait un truc du genre '[-]+'

    Existe-il une notion de répétition sur un caractère ?

    Papy

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Il est possible d'utiliser les regexp avec SQL Server soit via le CLR depuis 2005 soit avec les objets OLE et la librairie VBScript.RegExp

    ++

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    J'ai effectivement trouvé une implémentation de vbscript avec un fonction RegexMatch mais je n'arrive pas à la faire fonctionner :-(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from chaines 
    where dbo.RegexMatch('[-]+', chaines.texte) <> 0
    ça me renvoie toutes les lignes pour lesquelles la valeur texte contient au moins un -

    Surement un problème de syntaxe mais je ne vois pas lequel

  4. #4
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Pourrais t'on avoir le detail de votre implementation du regexp ?

    ++

  5. #5
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    J'ai trouvé ça sur le site http://www.simple-talk.com/sql/t-sql...ion-workbench/

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    USE [Amadeus]
    GO
     
    /****** Object:  UserDefinedFunction [dbo].[RegexMatch]    Script Date: 11/03/2011 14:26:08 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE FUNCTION [dbo].[RegexMatch]
        (
          @pattern VARCHAR(2000),
          @matchstring VARCHAR(MAX)--Varchar(8000) got SQL Server 2000
        )
    RETURNS INT
    /* The RegexMatch returns True or False, indicating if the regular expression matches (part of) the string. (It returns null if there is an error).
    When using this for validating user input, you'll normally want to check if the entire string matches the regular expression. To do so, put a caret at the start of the regex, and a dollar at the end, to anchor the regex at the start and end of the subject string.
    */ 
    AS BEGIN
        DECLARE @objRegexExp INT,
            @objErrorObject INT,
            @strErrorMessage VARCHAR(255),
            @hr INT,
            @match BIT
     
        SELECT  @strErrorMessage = 'creating a regex object'
        EXEC @hr= sp_OACreate 'VBScript.RegExp', @objRegexExp OUT
        IF @hr = 0 
            EXEC @hr= sp_OASetProperty @objRegexExp, 'Pattern', @pattern
            --Specifying a case-insensitive match 
        IF @hr = 0 
            EXEC @hr= sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
            --Doing a Test' 
        IF @hr = 0 
            EXEC @hr= sp_OAMethod @objRegexExp, 'Test', @match OUT, @matchstring
        IF @hr <> 0 
            BEGIN
                RETURN NULL
            END
        EXEC sp_OADestroy @objRegexExp
        RETURN @match
       END
     
    GO

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2007, 14h41
  2. Temps d'execution d'un select sur une vue
    Par rosewood dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/02/2005, 16h06
  3. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58
  4. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42
  5. Recupération des selections sur une DBGrille multi Selection
    Par Andry dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/11/2004, 11h43

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