ďťż
 
postgresql - problemy z castem ďťż
 
postgresql - problemy z castem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

postgresql - problemy z castem



Norbert - 03-01-2007 00:24
postgresql - problemy z castem
  Witam,

czy spotkaliscie sie z problemem ktory objawia sie komunikatami typu:

invalid input syntax for type numeric: "#EE5555"

lub tez

ERROR: numeric field overflow
DETAIL: The absolute value is greater than or equal to 10^3 for field with
precision 3, scale 0.

Problem pojawil mi sie gdy we view'sie zrobilem casta wartosci varchar na
int'a, numeric'a lub float'a
a nastepnie zapytalem sie o te wartosc w WHERE

czyli
we viewsie (dla postgresa 8 ) mam tak:

CREATE VIEW v_test
AS
SELECT
cast(vat_sp.s_parametr_wartosc as numeric(10,3)) AS f_vat_sp_produkt

i przy probie takiego zapytania

SELECT * from v_test
WHERE
f_vat_sp_produkt=22

dostaje komunikat

ERROR: invalid input syntax for type numeric: "#EE5555"

Probowalem tez tak
SELECT * from v_test
WHERE
f_vat_sp_produkt=(cast('22' as numeric(10,3)))

ale to tez nie pomaga

Jak to rozwiazac?

Z gory dzieki za pomoc

Pozdr.

Norbert





Herakles - 03-01-2007 00:24

  "Norbert" <norbertn_at_post.pl.i.dont.like.sp_a_m> wrote:

> Witam,
>
> czy spotkaliscie sie z problemem ktory objawia sie komunikatami typu:
>
> invalid input syntax for type numeric: "#EE5555"

I teraz przeanalizuj poniższe przykłady.

testowa=# select cast('22' as numeric(10,3));
numeric
---------
22.000
(1 row)

testowa=# select cast('22222222222222222222222' as numeric(10,3));
ERROR: numeric field overflow
DETAIL: The absolute value is greater than or equal to 10^22 for field with
precision 10, scale 3.

testowa=# select cast('#EE5555' as numeric(10,3));
ERROR: invalid input syntax for type numeric: "#EE5555"

Czyli masz kolorowy ten vat u siebie, no nie?




hubert depesz lubaczewski - 03-01-2007 00:24

  On 2007-01-02, Norbert <norbertn_at_post.pl.i.dont.like.sp_a_m> wrote:
> czy spotkaliscie sie z problemem ktory objawia sie komunikatami typu:
> invalid input syntax for type numeric: "#EE5555"

starasz się castowac dane "#EE5555" na numeric'a. nie działa - co nie
jest dziwne, bo to nie jest prawidłowa liczba.

> lub tez
> ERROR: numeric field overflow
> DETAIL: The absolute value is greater than or equal to 10^3 for field with
> precision 3, scale 0.

sorry, ale czego z tego tekstu nie rozumiesz?

> Jak to rozwiazac?

poprawić dane i casty?

depesz

--
http://www.depesz.com/ - blog dla ciebie




Norbert - 03-01-2007 00:24

  dzięki za odpowiedzi, ale nadal jestem w lesie

test=# select f_vat_sp_produkt from v_test;
f_vat_sp_produkt
------------------
22.000
(1 row)
nie zwraca mi #EE5555, tylko 22.000

Postaram sie przyblizyc problem, ponizsze to o czym rozmawiamy to oczywiscie
uproszczony przyklad, ale generujacy te same bledy

CREATE TABLE config (
i_id INTEGER,
nazwa VARCHAR(30),
wartosc VARCHAR(30)
) ;

COMMIT;

INSERT INTO "config" ("i_id", "nazwa", "wartosc")
VALUES
(1,'nazwa','abc');

INSERT INTO "config" ("i_id", "nazwa", "wartosc")
VALUES
(2,'adres','aaa');

INSERT INTO "config" ("i_id", "nazwa", "wartosc")
VALUES
(3,'vat_22','22');

INSERT INTO "config" ("i_id", "nazwa", "wartosc")
VALUES
(4,'vat_7','7');

no i views:

CREATE VIEW v_test
AS
SELECT
p.i_id,
p.nazwa,
cast(c.wartosc as numeric (10,3)) AS f_vat
FROM
produkt p JOIN config c ON (p.vat = c.i_id);

test=# select * from v_test where f_vat=22;
ERROR: invalid input syntax for type numeric: "abc"

Wyglada to tak jakby moj where lecial po "calosci" a dopiero pozniej dzialal
inner join z views'a, ale to jest chyba bez sensu.

Jakies pomysly?

Pozdr.

Norbert





Ronald Kuczek - 03-01-2007 00:24

  Norbert napisał(a):
> Wyglada to tak jakby moj where lecial po "calosci" a dopiero pozniej dzialal
> inner join z views'a, ale to jest chyba bez sensu.
>

Pośpiech Twoim wrogiem ;-)
Skoro f_vat jest aliasem do cast(c.wartosc as numeric (10,3))
a w zapytaniu żądasz - where f_vat=22 to pomyśl przez chwilę, relaks,
dlaczego to tak działa a nie inaczej (czyli dostajesz błąd).
IMO prościej byłoby do tabeli config dodać kolumnę numeryczną value_type
i napisać widok tak (case when blabla) , aby nie wysypał się nigdy.

Pozdrawiam
Rony




Norbert - 03-01-2007 00:24

  skonczylo sie na tym ze ograniczylem zakres tego views'a w taki sposob aby z
tabeli config byly pobierane tylko te dane, ktore beda sie dobrze castowac
.... i dziala, dziekuje wszystkim za pomoc

Pozdrawiam

Norbert
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= mysql i mysql-front, problem String line; if (line=="cos"){...}....problem [oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?= [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ? [MySQL] Problem z zapisem danych w bazie danych Problem z mysql - can't connect to MySQL/nietypowo...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • anette.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com