Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.473 pregleda

Najnovija ↓

LOOP za svaki broj u stringu "1,2,4,6,7" 04.09.2008. u 13:21 · pre 221 mesec #1
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.

Potpis
Aukcije, www.Odbrojavanje.com
Aukcija može biti osvojena jeftino - za 30 sekundi a 6 dinara!
Re: LOOP za svaki broj u stringu "1,2,4,6,7" 05.09.2008. u 08:42 · pre 221 mesec #2
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)?
Potpis
"Common sense is not so common." - Voltaire
Re: LOOP za svaki broj u stringu "1,2,4,6,7" 05.09.2008. u 10:26 · pre 221 mesec #3
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 ;
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme