sortowanie problem
jp - 04-08-2006 01:23
sortowanie problem
Witam Jak powinienem użyć CAST? Jest sobie tabela zawierająca kolumnę 'numer' kolumna numer jest typu char(). Są w nią wpisywane w zasadzie liczby całkowite ale musi być możliwość wpisania np. "1A". Wyświetlając dane z tabeli chciałbym posortować wg kolumny numer, więc robię: SELECT * FROM tabela ORDER BY CAST(numer AS INTEGER)
No i jeśli są tylko cyfry to działa ok, natomiast jak są cyfry i litery lub tylko litery to
Warning:ibase_query(): conversion error from string "1A " in ....
Czy można jakoś to obejść, tzn aby baza się nie burzyła?
Chodzi o bazę Firebird (w połączeniu z PHP).
Pozdrawiam Jacek Poźniak
SuperTen - 04-08-2006 01:23
jp napisał(a): > Witam > Jak powinienem użyć CAST? > Jest sobie tabela zawierająca kolumnę 'numer' kolumna numer jest typu > char(). Są w nią wpisywane w zasadzie liczby całkowite ale musi być > możliwość wpisania np. "1A". > Wyświetlając dane z tabeli chciałbym posortować wg kolumny numer, więc > robię: > SELECT * FROM tabela ORDER BY CAST(numer AS INTEGER) >
ja kiedyś rozwiązałem tą sprawę za pomocą dodatkowego pola w bazie (bez liter) i po nim sortowałem
-- _________ / , _ \ | Pozdrawiam. SuperTen. | `. '|(_) .' | "...Codziennie gdy wstajesz, otrzymujesz | `. .' | szansę, aby stać się lepszym..." | `.' | ...@..%..+ $this->wyslij(); |
mariusz.maximus - 04-08-2006 01:23
jp napisał(a): > Witam > Jak powinienem użyć CAST? > Jest sobie tabela zawierająca kolumnę 'numer' kolumna numer jest typu > char(). Są w nią wpisywane w zasadzie liczby całkowite ale musi być > możliwość wpisania np. "1A". > Wyświetlając dane z tabeli chciałbym posortować wg kolumny numer, więc > robię: > SELECT * FROM tabela ORDER BY CAST(numer AS INTEGER) > > No i jeśli są tylko cyfry to działa ok, natomiast jak są cyfry i litery lub > tylko litery to > > Warning:ibase_query(): conversion error from string "1A " in .... > > Czy można jakoś to obejść, tzn aby baza się nie burzyła? > > Chodzi o bazę Firebird (w połączeniu z PHP). > > Pozdrawiam > Jacek Poźniak > > >
mysle ze jakis prosty UDF zalatwił by ten problem
Michał Kuratczyk - 04-08-2006 01:23
jp wrote: > Jest sobie tabela zawierająca kolumnę 'numer' kolumna numer jest typu > char(). Są w nią wpisywane w zasadzie liczby całkowite ale musi być > możliwość wpisania np. "1A". > Wyświetlając dane z tabeli chciałbym posortować wg kolumny numer, więc > robię: > SELECT * FROM tabela ORDER BY CAST(numer AS INTEGER) > > No i jeśli są tylko cyfry to działa ok, natomiast jak są cyfry i litery > lub tylko litery to > > Warning:ibase_query(): conversion error from string "1A " in .... > > Czy można jakoś to obejść, tzn aby baza się nie burzyła? 1. Po co w ogóle rzutujesz na integer? Czemu nie robisz sortowania alfanumerycznego? 2. Czy jesteś absolutnie pewien, że '1A', to jest jedna wartość, a nie dwie? Czy aby nie są to logicznie dwie różne informacje, które przyjęło się podawać razem? Bo jeśli to są dwie wartości, z których każda ma własne znaczenie (np. 1 - numer egzemplarza, A - symbol maszyny, która ten egzemplarz wyprodukowała, czy coś w tym stylu), to powinny być po prostu dwa pola w bazie (i ewentualnie trzecie sklejające) i wtedy sortujesz po prostu "order by numer, symbol".
-- Michał Kuratczyk
jp - 06-08-2006 02:18
Dzięki za pomoc Widzę, że będę musiał nieco inaczej podejść do problemu.
Pozdrawiam Jacek Poźniak
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[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
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
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.pldoc.pisz.plpdf.pisz.pllatwa-kasiora.pev.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 |
|