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 :

Déclarer un ensemble de variables


Sujet :

Développement SQL Server

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 245
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 245
    Par défaut Déclarer un ensemble de variables
    Bonjour,

    je viens vers vous pour un problème qui m'empêche de poursuivre ma requête sql server.
    je dois déclarer comme variable un ensemble de codes postaux.
    J'ai crée la ligne de code ci dessous, mais cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECLARE @PostalCode varchar(255) = '04*;05*;75*;66*'
    Un coup de main serait le bienvenu

  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,

    Vous déclarez une variable scalaire, et ne pourrez donc lui affecter qu'une valeur scalaire...

    Vous pouvez passer par une variable de type table, mais en savoir plus sur ce que vous cherchez à faire nous aiderait à vous proposer la solution la mieux adaptée...

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 245
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 245
    Par défaut
    Bonjour aieuuuu

    Pourriez vous me dire la différence entre une variable scalaire et une variable type table.

    J'essaie d'extraire un nombre de produits en fonction de code postaux.
    Vous trouverez ci dessous la requete sql complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DECLARE @StartDateTime DateTime = '20180524 04:30:00'
    DECLARE @EndDateTime DateTime =   '20180525 04:30:00'
     
    DECLARE @PostalCode varchar(255) = '04*;05*;75*;66*'
     
    select
    count(Parcel.id)
     
    from [SpeedParcel].[dbo].[parcel]
    JOIN [SpeedParcel].[dbo].ParcelEvent
    ON Parcel.Id=ParcelEvent.ParcelId AND 
                  Parcel.PostalCode IN (@PostalCode) AND
                          ParcelEvent.[Eventdate] BETWEEN @StartDateTime AND @EndDateTime

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Si vous utilisez la version 2016 ou plus, vous pouvez utiliser STRING_SPLIT

    Sinon vous pouvez écrire votre propre SPLIT en T-SQL ou en utilisant le CLR.

    Ensuite, comme déjà mentionné, tout dépend d'où vient votre variable.

    Si elle doit être déclarée INLINE à la main, vous pouvez passer par une CTE ou une table temporaire.
    Si elle doit être appelée par une procédure stockée ou un programme externe, vous pouvez passer par une variable de type table.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -- parse d'une chaine de caractères avec séparateur
    DECLARE @t TABLE ( texte VARCHAR(50) );
    INSERT @t VALUES ('toto;titi;tutu;tata');
    ; WITH CTE AS ( SELECT CAST('<c>' + REPLACE(texte, ';','</c><c>') + '</c>' AS XML) AS texte_xml FROM @t )
    	SELECT T.C.value('(./text())[1]','VARCHAR(10)') AS C FROM CTE CROSS APPLY texte_xml.nodes('//c') AS T(C)

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 245
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 245
    Par défaut
    je reviens dans cette discussion pour repartir sur la mise ne place d'une variable de type table.
    En fait je souhaite dans une requête déclarer liste de plusieurs variable dans le where. Or actuellement je travaille uniquement sur des variables scalaires.
    Je sous sous sql 2012.
    Merci

  7. #7
    Membre éclairé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 60
    Par défaut
    C'est la semaine du split ?

  8. #8
    Membre confirmé Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Par défaut
    Un peu plus de précision avec un exemple des données et du résultat attendu aiderait à mieux te répondre !
    Il existe potentiellement plusieurs solutions, à voir celle qui est le mieux appropriée à ta demande...

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/02/2012, 20h48
  2. [MySQL] comment déclarer des valeurs de variables avec jointure SELECT Mysql
    Par monlou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/07/2010, 00h17
  3. Réponses: 2
    Dernier message: 10/02/2010, 11h06
  4. Avoir la liste dans l'ensemble des variables définies
    Par Jonathan.b dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/02/2010, 21h11
  5. [Info]Modifier un ensemble de variable
    Par kaiser2003 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 07/09/2005, 15h53

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