round

Hallo Zusammen,

ist so was korrekt?

hilf1 := round(hilf2/hilf3, 0)

wobei hilf1 muss integer-Wert sein.

Danke im Voraus,
ANja.

Verrätst Du uns, was Du einklich willst?

Andreas

anscheinen gibt es die Funktion ‘round’ nicht…

ich will also:

hilf1 := hilf2/hilf3;

wobei hilf1 muss INT sein/bleiben auch wenn die Teilung hilf2/hilf3 doch einen nicht-integer Wert ergeben hat.

Blödsinn… PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Mathematical Functions and Operators Tabelle 9-3.

cu tb.

Der Schein trügt.

test=*# select round(5/3,0);
 round
-------
     1
(1 row)



ich will also:

hilf1 := hilf2/hilf3;

wobei hilf1 muss INT sein/bleiben auch wenn die Teilung hilf2/hilf3 doch einen nicht-integer Wert ergeben hat.


test=*# create table hilf (h1 int, h2 int, h3 int);
CREATE TABLE
test=*# insert into hilf (h1, h2) values (5,3);
INSERT 0 1
test=*# update hilf set h3 = h1/h2;
UPDATE 1
test=*# select * from hilf ;
 h1 | h2 | h3
----+----+----
  5 |  3 |  1
(1 row)

Ich sehe noch immer nicht Dein Problem…


Andreas

hm… wenn h3 int ist und h1/h2 eine nicht-int Zahl ergeben, dann wird in h3 der Integer-Teil reingeschrieben? Ich bekomme doch eine Fehlermeldung:
FEHLER: ungültige Eingabesyntax für ganze Zahl: ╩6.99999999999999╚

Dann verwende einen CAST. Ich kann ansonsten das nicht weiter nachvollziehen, selbst in einer Function klappt das:

test=*# create function h1(int, int) returns int as $$begin return $1/$2; end;$$ language plpgsql;
CREATE FUNCTION
test=*# select h1(5,3);
 h1
----
  1
(1 row)

test=*# select h1(6,3);
 h1
----
  2
(1 row)

test=*# select h1(16,3);
 h1
----
  5
(1 row)

Andreas