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 :

[SQL Server 2000] Faire un Split sur une chaîne pour WHERE IN ()


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut [SQL Server 2000] Faire un Split sur une chaîne pour WHERE IN ()
    Bonjour,

    Voilà j'ai une colonne d'une table qui contient des adresses IP séparées par un pipe "|". Exemple : "192.168.0.1|249.26.41.17|10.0.0.1"

    J'ai besoin d'effectuer un WHERE IP IN ("les différentes adresses IP contenues dans la colonne en question").

    Or j'ai du mal à déterminer la solution adéquate. Transact SQL n'a visiblement pas de fonction SPLIT ni de procédure stockée qui sache faire ça.

    Alors quelle est selon vous la méthode la plus simple pour m'acquitter de cette tâche? Faire joujou récursivement avec CHARINDEX et SUBSTRING?

    Merci d'avance pour toute aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Par défaut
    bonjour,

    il aurait mieux valu stocker les IP dans une table pour faire une jointure avec la table principale ...

    vous pouvez éventuellement essayer en guise de bidouille, de remplacer les pipes par des virgules entourées de quotes..., ce qui produira une chaine
    pouvant être mise dans un IN....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare @in varchar(200)
     
    select  @in = replace(colonne_des_ip,'|',''',''') from table_des_ip where machin
     
    execute ('select cols from table where IP IN ('+@in+')')
    mais c'est plutôt moche...

  3. #3
    Membre chevronné Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Par défaut
    Merci beaucoup c'est exactement ce que je recherchais

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2006, 09h11
  2. [SQL Server 2000] Attach: error 1813 sur log
    Par Gugli dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/09/2006, 09h15
  3. Réponses: 16
    Dernier message: 14/04/2006, 18h38
  4. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54
  5. [SQL server 2000] Détruire les dépendances d'une table
    Par Cyborg289 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/02/2006, 11h39

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