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 :

Fonction pour la comparaison de deux champs différents en SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 138
    Points : 53
    Points
    53
    Par défaut Fonction pour la comparaison de deux champs différents en SQL Server
    Bonjour,
    J'aimerai savoir s'il existe une fonction en SQL Server (comme MIN(col) ) mais avec deux paramètres, afin de comparer deux valeurs provenant de champs différents.

    Merci d'avance.

  2. #2
    Membre régulier Avatar de DonkeyMaster
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 95
    Points : 110
    Points
    110
    Par défaut
    Ce que je fais dans ces cas là, c'est de convertir les champs en (var)char puis de les comparer.

    select cast(005 as varchar)
    -OU-
    select convert(varchar, 005)

    Pour une aide plus précise, il faut un exemple plus précis.

    J'espère que ça t'aidera.

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Il y a peut être une solution avec la fonction MIN, mais pour l'instant la seule que j'aie trouvé est d'écrire une petite fonction qui te retourne le plus petit nombre des deux passés en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE FUNCTION Fn_Min (@numberA INT, @numberB INT)
    	RETURNS INT
    AS
    BEGIN
    	IF @numberA < @numberB
    		RETURN @numberA
    	RETURN @numberB
    END

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 138
    Points : 53
    Points
    53
    Par défaut
    Bonjour et merci pour vos réponses.
    Le problème c'est que la fonction que je dois écrire est une variable string attachée à une requête, cette string devant être un paramètre à passer dans une fonction, du style :

    void function (string sqlpart)
    {
    datasetDs = "select...... where " + sqlpart
    }
    et cette fonction sera appelée de cette façon :

    function("la fonction min à écrire du style min(champ1, champ2)");

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 138
    Points : 53
    Points
    53
    Par défaut
    Aucune idée ?

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Peux-tu préciser, parce que là je ne vois pas ce que tu veux faire exactement

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 138
    Points : 53
    Points
    53
    Par défaut
    Bonjour elsuket,

    Comme je l'ai dis plus haut, je veux écrire une fonction qui retourne le minimum de 2 champs différents, sachant que cette fonction devra être déclarée dans la clause WHERE.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Quelque chose comme cela pourrait-il s'appliquer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MIN(AllTable.MonChamp)
    FROM (SELECT MonChampA AS MonChamp FROM TableA
    	UNION ALL SELECT MonChampB FROM TableB) AllData
    Cela ne te donne pas le champ dont est issu le minimum ceci dit.

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    C'est tout l'intérêt des fonctions scalaires (à utiliser avec parcimonie tout de même) : tu peux mettre l'appel dans la clause SELECT ou WHERE

Discussions similaires

  1. Fonction pour la comparaison entre deux dates
    Par malouchka dans le forum R
    Réponses: 3
    Dernier message: 01/09/2014, 15h36
  2. Comparaison de deux champs
    Par sissi25 dans le forum ASP
    Réponses: 7
    Dernier message: 29/06/2006, 14h38
  3. Comparaison De Deux Champ
    Par olivier67 dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 18h58
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53

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