[ dragancesu @ 19.10.2009. 15:13 ] @
Treba da napravim program za kasu tacnije fiskalni printer. Sve je to ok, ali mi treba mala pomoc. Taj stampac ne dozvoljava duple nazive, a korisnici ce ubaciti sve i svasta. Ima li funkcija koja ce zameniti neke karaktere u tekstu? Potrebno je iz teksta izbaciti blanko, zarez i navodnik.

Znaci artikal 'NIVEA 50, "g' bi trebao biti 'NIVEA50g' (jes malo glupav primer, ali tako treba). U petlji cu da uradim, ali moze li jednom potezu?
[ MarkoBalkan @ 19.10.2009. 17:12 ] @
ima funkcija replace i trim za micanje praznina.

u array stavi sve specijalne znakove.

koristi replace gdje ti bude jedan parametar taj array[x].kojeg vrtiš sa for petljom za svaki proizvod.


[ Comii @ 19.10.2009. 20:17 ] @
Možeš ovako da pokušaš:


select replace (replace(replace('NIVEA 50, "g',' ',''),'"',''),',','') from dual
[ dragancesu @ 20.10.2009. 08:25 ] @
Hvala, to mi je trebalo.
[ djoka_l @ 20.10.2009. 10:02 ] @
Može i kraće:
Code:
select translate('NIVEA 50, "g', 'x, "', 'x') from dual


U funkciji TRANSLATE se iz prvog stringa zamenjuju svi karakteri koji se nalaze u drugom stringu karakterom na odgovarajućoj poziciji u trećem stringu. Ono x u drugom i trećem stringu služi samo zato da treći string ne bi bio prazan, jer bi onda funkcija vraćala null za bilo koji ulazni string. Ako je treći string kraći od drugog, onda se u rezultatu izbacuju oni karakteri koji nemaju odgovarajući karakter u replace stringu. Ovako kako je napisana, funkcija zamenjuje iz prvog stringa svako x sa x (ne radi ništa), izbacuje znake zarez, blanko i navodnike, a ostale karaktere ne dira nego samo prenosi u rezultat...