PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  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  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Utiliser PostgreSQL comme parser mathématique

Technique - général | Utiliser PostgreSQL comme parser mathématique

Par h.henoch le 13/10/2006 - 09:40

Bonjour, je ne sais si ce que je raconte va vous servir mais je voulais utiliser les capacités de postgresql pour en faire un parser d'expression mathématique.

Le but est d'évaluer la valeur d'une chaîne de caractères contenant une expression mathématique '1+2*3' ou bien une expresion du type '2*cos(x)*sin(y)' où x et y sont des variables. Comme le nombre de fonction que mon programme utilise est très elevé et qu'elles sont stockées en chaînes de caractères dans une table, je me voyais mal les réécrire en fonction postgres.

Voici donc une solution simple pour cela :

CREATE OR REPLACE FUNCTION eval("varchar")
RETURNS "numeric" AS
$BODY$
DECLARE
s varchar;
r numeric;
BEGIN

s := 'select ' || $1 ;
execute s into r;
return r;

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

$1 est la chaîne de caractère à évaluer après remplacement des variables par leur valeur. Ainsi select eval('1+2*3') va donner 7. En espérant que cela vous serve aussi.

NB : si une solution plus simple existe je suis prenneur.

© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.