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

Requêtes MySQL Discussion :

Calculer la valeur du contenu du champ1


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut Calculer la valeur du contenu du champ1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Champ1
    0*4.59999990463257+0*2.25+0*4.75+4.59999990463257*2.25+4.59999990463257*4.75+2.25*4.75
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT 0*4.59999990463257+0*2.25+0*4.75+4.59999990463257*2.25+4.59999990463257*4.75+2.25*4.75
    ->j'obtient : 42.88

    Si je fais
    ->j'obtiens :0*4.59999990463257+0*2.25+0*4.75+4.59999990463257*2.25+4.59999990463257*4.75+2.25*4.75



    Je voudrais qu'il fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT calc(champ1)
    et que j'obtienne : 42.88



    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Faites le coté applicatif ca sera beaucoup plus simple ... Ce genre de demande n'est pas du tout fait pour un sgbd.


    Sinon passez par une procédure stockée (et bonne chance avec les split ! )

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut
    Je me repond à moi-même

    2 fonctions
    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
    47
    48
     
     
     
    CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT) RETURNS VARCHAR(255)
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),delim, '');
     
    DELIMITER //
     
    CREATE FUNCTION `CALCULATE`(str LONGTEXT) RETURNS decimal(10,4)
    BEGIN
     
    	DECLARE result decimal(10,4) DEFAULT 0;
    	DECLARE result2 decimal(10,4) DEFAULT 1;
     
    	DECLARE i INT DEFAULT 1;
    	DECLARE j INT DEFAULT 1;
    	DECLARE c1 VARCHAR(255);
    	DECLARE c2 VARCHAR(255);
    	DECLARE x INT DEFAULT 0;
    	DECLARE y INT DEFAULT 0;
     
    	REPEAT
    		SET c1=SPLIT_STRING(str,'+',i);
    		IF c1='' THEN
    			SET x = 1;
    		ELSE
    			SET result2 = 1;
    			SET j = 1;
    			SET y = 0;
    			REPEAT
     
    				SET c2=SPLIT_STRING(c1,'*',j);
    				IF c2 ='' THEN
    					SET y = 1;				
    				ELSE
    					SET result2 = result2 * c2;
    				END IF;
    				SET j = j + 1;
    			UNTIL y=1 END REPEAT;
    			SET result = result + result2;
    		END IF;
    		SET i = i + 1;
    	UNTIL x = 1 END REPEAT;
     
    	RETURN result;
     
    END
    //

    et apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CALCULATE(champ1) from test

    Merci @punkoff

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut
    Petite modif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CREATE FUNCTION SPLIT_STRING(str LONGTEXT, delim VARCHAR(12), pos INT) RETURNS LONGTEXT
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),delim, '');

    str => LONGTEXT
    return => LONGTEXT

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

Discussions similaires

  1. Calcul de valeurs propres
    Par Andrey dans le forum Pascal
    Réponses: 6
    Dernier message: 11/02/2007, 23h20
  2. calcul de valeurs présentes dans une liste de résultat
    Par Makaveli33 dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2006, 19h03
  3. Problème champs calculés et valeur null
    Par markintell dans le forum Access
    Réponses: 18
    Dernier message: 10/01/2006, 18h14
  4. Réponses: 6
    Dernier message: 22/11/2005, 17h08
  5. [Debutant]calcul de valeurs propres, givens-householder
    Par malbarre dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 18/08/2005, 16h40

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