[ zgas @ 04.09.2008. 12:21 ] @
| Zelim da kreiram proceduru.
prociteo sam jedno polje sledece vrednosti : "1,2,4,6,7"
Zelim nekako da izvrsim LOOP ovih numerickih vrednosti, tj, da svaku pojedinacnu vrednost upisem kao poseban red u drugoj tabeli
Vizuelno objasnjenje
tabela1
----------------
red1 | 1,2,4,6,7|
----------------
nakon upotrebe procedure dobijam tabelu 2
tabela2
------------
| red 1 | 1 |
------------
| red 2 | 2 |
------------
| red 3 | 4 |
------------
| red 4 | 6 |
------------
| red 5 | 7 |
------------
Znaci pitanje je: kako izvrsiti LOOP kroz string numericke delove?
Nadam se da ste me razumeli.
|
[ Shinhan @ 05.09.2008. 07:42 ] @
Ovo bi moglo trivijalno da se uradi u php, python ili bilo kom drugom jeziku. Da li je tvoje pitanje kako to da uradiš u (kom jeziku?) ili u MySQL (što bi bilo vrlo komplikovano)?
[ cdorde @ 05.09.2008. 09:26 ] @
Evo funkcije koja vraća broj redova i istovremeno insertuje u tabelu temp. Ovo naravno treba prilagoditi potrebama.
Ulazni parametri u funkciju su ulazni string i delimeter npr.
select izListeUTabelu('1,2,3,4,5,6',',')
će kao rezultat vratiti 6 a u tabeli temp će biti upisano šest redova sa sadržajem prvi red 1, drugi red 2 ... šesti red 6.
Napomena: Funkcija se kreira u semi hoteliptv
DELIMITER $$
DROP PROCEDURE IF EXISTS `hoteliptv`.`izListeUTabelu` $$
CREATE FUNCTION `hoteliptv`.`izListeUTabelu` (ulaz VARCHAR(255),delimeter VARCHAR(255)) RETURNS INT
BEGIN
DECLARE priv VARCHAR(255);
DECLARE jedan VARCHAR(255);
DECLARE koliko,param1 INT;
set priv=concat(ulaz,',');
SET koliko=0;
REPEAT
set param1= instr(priv,delimeter);
if param1>0 then
set koliko=koliko+1;
set jedan=substr(priv,1,param1-1);
set priv=substr(priv,param1+1);
insert into temp(value) values(jedan);
end if;
UNTIL param1=0 END REPEAT;
RETURN koliko;
END $$
DELIMITER ;
[ zgas @ 05.09.2008. 16:00 ] @
>
>
Hvala puno "cdorde" ovo je resenje.
Hvala!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.