[ mika @ 05.06.2007. 13:51 ] @
Pozdrav svima, interesuje me kako se u MySQL-u podešava da umesto "." kao decimalnog separatora bude ","?

Da li se to bira putem "SET NAMES..." klauzule ili na drugi način? Meni je prvi upit posle konekcije na bazu "SET NAMES UTF8" pošto mi je osnovni uslov da koristim UTF8 karakter set.

Hvala!
[ mika @ 05.06.2007. 16:01 ] @
Prelazno resenje je napraviti stored funkciju koja glasi:

Code:

DELIMITER //
CREATE FUNCTION FORMAT_FLOAT(INPUT FLOAT ) 
RETURNS FLOAT
RETURN replace( replace( replace( INPUT, '.', '_' ) , ',', '.' ) , '_', ',' ) ;//


...medjutim, iz nekog razloga, ova funkcija vraca celobrojne vrednosti. Isto se desava i kada je napravim na sledeci nacin:

Code:

DELIMITER //
CREATE FUNCTION FORMAT_FLOAT(INPUT FLOAT ) 
RETURNS FLOAT
RETURN replace( INPUT, '.', ',' ) ;//


MySQL verzija 5.0.33 je u pitanju. Ima li ko ideju zasto se ovako cudno ponasa?

Kada otkucam:

Code:

select replace(Polje, '.',',') as formatiranoPolje from tabela;


...onda je sve u redu. Ne razumem zasto je to tako? Ako je neko eksperimentisao sa ovim, pisite.

Pozz
[ mika @ 06.06.2007. 08:06 ] @
Evo dosao sam konacno do solomonskog resenja koje meni vrsi posao:

Code:

CREATE FUNCTION format_number (param float) RETURNS varchar(20)
    
    RETURN replace(replace(replace(format(param,2),".","_"),",","."),"_",",");


...dakle, trik je u tome da funkcija vraca varchar umesto float.

Probajte onda sledece:

Code:

SELECT FORMAT_NUMBER(1.5);


...vraca rezultat: 1,5

Radi kako treba, s tim sto sam ja stavio jos i funkciju koja ostavlja samo poslednje dve decimale (to je ono format(param,2) u sredini one "kobasice" od izraza).

Pozz.