Обсуждение: abs value, power, sqrt
Hi folks, I previously posted this to pgsql-novice but haven't gotten an answer, so I thought I'd try here. I need a way to get abs value of a floating point number and (possibly separate function for) abs value of an integer in a select statement. Is there a function to do this? If not, how can I write a function to do it? Also how do I do squares and square roots? I saw some \|/ type notation for square root in an SQL book, but I didn't get postgres to take that. thanks, Michael _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com
Michael Olivier <molivier@yahoo.com> wrote: > I need a way to get abs value of a floating point number and > (possibly separate function for) abs value of an integer in a select > statement. You had to look up the manuals at numerical *operators* -- no need to define YAF ;-) => select @-17.0; 17 > Also how do I do squares and square roots? I saw some \|/ type > notation for square root in an SQL book, but I didn't get postgres > to take that. try e.g. => select 2*2, 2^2; 4 4 and: => select |/2; 1.4142135623731 without the backslash (originally quoting in a shell?) it seems to work ... Hope it helps Ulf -- ====================================================================== %%%%% Ulf Mehlig <umehlig@zmt.uni-bremen.de> %%%%!%%% Projekt "MADAM" <umehlig@uni-bremen.de> %%%% %!% %%%% ---------------------------------------------------- ---| %%% MADAM: MAngrove | Center for Tropical Marine ||--%!% Dynamics | Biology || And | Fahrenheitstrasse 1 _ /||\_/\_ Management | / / \ \ ~~~~~~~~~~~~~~~~~ | 28359 Bremen/Germany ~~~~~~~~~~~~~~~~~~~~
On Thu, 19 Nov 1998, Michael Olivier wrote: :Hi folks, : :I previously posted this to pgsql-novice but haven't gotten an answer, :so I thought I'd try here. : :I need a way to get abs value of a floating point number and (possibly :separate function for) abs value of an integer in a select statement. :Is there a function to do this? If not, how can I write a function to :do it? : :Also how do I do squares and square roots? I saw some \|/ type notation :for square root in an SQL book, but I didn't get postgres to take that. On my RH installation I found: file:/usr/doc/postgresql-6.3.2/user/c05.htm which I have attached. It documents the operators and functions available. Examples of your specific operators are: absolute value: @-5 square root : |/ 25 Square would just be x * x or use the exponentiation operator: 2.0 ^ 3.0 As an example, here is a snippet from a perl cgi script that finds all the zip codes within a specified radius of a target location. The target location is specified by $lat and $lon (in degrees), the radius by $Radius (in miles). >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #! /usr/bin/perl -w # file: zips.by.location.m4 snip ... # radius is in miles ... $Radius = $input{'radius'}; # convert radius to degrees, circumference is pi * d $Radius = $Radius * 360.0 / (7900.0 * atan2(1,1) * 4.0); $RadiusSquared = $Radius * $Radius; snip ... # call psql to find the zip codes ... $temp = qx{ psql -d lrcf -c " select city, state, zip5, population, latitude, longitude from zips where ( ( ((latitude - $lat) ^ 2.0) + ((longitude - $lon) ^ 2.0) ) < $RadiusSquared );" }; # print results to html page print "<pre>$temp</pre>"; snip ... <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Hope this helps, ====================================================================== Bob Smither, Ph.D. 281-331-2744; fax:-4616 Smither@C-C-I.Com Windows - making simple things easy, and interesting things impossible ======================================================================
Hello Bob, sabato, 21 novembre 98, you wrote: BS> On Thu, 19 Nov 1998, Michael Olivier wrote: BS> :Hi folks, BS> : BS> :I previously posted this to pgsql-novice but haven't gotten an answer, BS> :so I thought I'd try here. BS> : BS> :I need a way to get abs value of a floating point number and (possibly BS> :separate function for) abs value of an integer in a select statement. BS> :Is there a function to do this? If not, how can I write a function to BS> :do it? BS> : BS> :Also how do I do squares and square roots? I saw some \|/ type notation BS> :for square root in an SQL book, but I didn't get postgres to take that. ------------------------------------------------------------------------ funct PostgreSQL result remarks ------------------------------------------------------------------------ ABS: select @ -12 12 absolute value MODULE: select 100 % 3 1 module POWER: select dpow(12,2) 144 power ROUND: select dround(12.7) 13 round SQRT: select dsqrt(144) 12 square root TRUNC: select dtrunc(1.2) 1 truncate int value ROOT3: select dcbrt(27) 3 cube root LOG: select dlog1(100) 4.60517018598809 logarithm EXP: select dexp(2) 7.38905609893065 exponent ------------------------------------------------------------------------ Jose'