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

MS SQL Server Discussion :

Expression régulière sous Sql Server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur d'études en développements techniques
    Inscrit en
    Novembre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études en développements techniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 244
    Par défaut Expression régulière sous Sql Server
    J'aimerai faire une requête utilisant les expression régulière mais je connais pas la syntaxe exacte : j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT DISTINCT 
                          ISNULL(CIV_SHORT, '') + ' ' + ISNULL(RES_NOM2, '') + ' ' + ISNULL(RES_NOM, '') AS CLIENT_NOM, 
                          RES_PAYSID AS CLIENT_PAYS, 
    					  Nom_Hotel AS CLIENT_HOTEL, 
    					  RES_DATEARR AS HOTEL_DATE_ENTREE, 
    					  RES_DATEDEP AS HOTEL_DATE_SORTIE, 
                          RegexSelectAll(EMAIL, "^[a-zA-Z0-9\-_]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9\-_]+\.[a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+" )AS CLIENT_EMAIL, 
    					  CAN_DESC AS ORIGINE_RESERVATION, 
    					  NB_JOURS
    FROM         dbo.liste_departs_FrontRes_Generiques
    WHERE     (NB_JOURS <= 420) AND (Nom_Hotel <> 'Mathis Elysees Hotel')
    ORDER BY NB_JOURS DESC
    Mais cela ne fonctionne pas. D'avance merci pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 87
    Par défaut
    Bonjour,

    Personne n'a encore répondu donc je vais tenter de t'aider au mieux.
    Chez moi la fonction me retourne : 'RegexSelectAll' is not a recognized built-in function name.
    Visiblement ce n'est pas une fonction SQL Server ou alors utilisable avec d'autres librairies, je ne sais pas.

    Les expressions régulières s'utilisent dans tes prédicats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE EMAIL like '% ton_expression_régulière %'
    Pour plus d'info sur la commande like : http://msdn.microsoft.com/fr-fr/library/ms179859.aspx

    Maintenant, pour essayer de nettoyer ou mettre en forme ton champ EMAIL, j'utiliserais les fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTRING, REPLACE, UPPER, LEN
    etc ...


    En espérant avoir pu t'orienter dans ta recherche.
    Cdt,

  3. #3
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    en effet, SQL Server ne supporte pas les expressions rationnelles, tu as juste un LIKE à disposition, avec une syntaxe sommaire.
    Tu peux faire des expressions rationnelles en développant toi-même une fonction en .NET et en l'intégrant dans SQL Server. Attention, les performances ne seront pas terribles.

    Tu as ici un article pour t'aider.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur d'études en développements techniques
    Inscrit en
    Novembre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études en développements techniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 244
    Par défaut
    Merci à tous pour vos réponses : je ne peux pas rajouter de fonction .NET, d'une je ne sais pas faire, et de deux je n'ai pas les droits.

    En fait je voulais juste faire en sorte que je puisse bien avoir des adresses emails valides pour mon emailing : en fait je fais le traitement sur deux BD, une sous Oracle et l'autre sous SQL Server. J'ai fait la manip sur Oracle et c'est bien pratique de traiter l'info en amont directement dans la requête et je voulais faire pareil sur Sql Server : il y a un t'il un moyen via un script SQL genre un trigger ?

  5. #5
    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
    comme indiqué, il faut passer par une fonction SQL CLR développée en .net. MS en fournit une toute faite.

    Par sécurité, la config du serveur interdit l'utilisation de SQL CLR, mais il suffit de reconfigurer cela par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    exec sp_configure 'clr enabled', 1;
    go
    reconfigure
    go
    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/ * * * * *

  6. #6
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Permettez-moi de rebondir sur ce sujet.
    Actuellement la plupart des SGBDs ont intégré de façon native la gestions des expressions régulières. Après hésitation ORACLE l'à finalement introduit depuis sa version 10G. Et aujourd’hui en 2011 MS n'a pas jugé bon d'intégrer ces fonctions dans son SGBD ! et demande aux utilisateurs de créer des fonctions CLRs. Donc de faire un peu de code .NET et de le déployer dans SQL Server ! Qu'est ce que sa coûte à MS t'intégrer de façon native : la gestion des expressions régulières ?
    Etienne ZINZINDOHOUE
    Billets-Articles

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

Discussions similaires

  1. Création d'un plan de maitenance sous SQL SERVER 2005 EXPRESS
    Par matimat2k4 dans le forum Développement
    Réponses: 1
    Dernier message: 26/10/2009, 22h44
  2. Equivalent de rownum sous SQL server
    Par Isildur dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/07/2009, 15h48
  3. creer une base de donnees sous sql server express 2005
    Par brajae85 dans le forum Développement
    Réponses: 2
    Dernier message: 08/09/2008, 12h54
  4. Réponses: 6
    Dernier message: 31/05/2007, 15h54
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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