Van egy ilyen tárolt függvényem:
CREATE FUNCTION SPLIT_STR( x VARCHAR(255), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),delim, '');
Hogyan bővítsem ki úgy, hogy abban az esetben, ha nincs delimiter, akkor az eredeti x stringgel térjen vissza? MySQL függvény szintaxissal még hadilábon állok... :(
- 1184 megtekintés
Hozzászólások
Elnézést, ez tárgytalan lett, a SUBSTRING_INDEX() is megcsinálta, ami nekem kellett. :) DE azért lehet rágódni a problémán, hátha valakinek még jól jön.
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
RETURN if(length(delim) > 0, REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),delim, ''), x);
SPAMtelenul - POP3 spamszuro szolgaltatas
- A hozzászóláshoz be kell jelentkezni
Nem, rosszul fogalmaztam ezek szerint...
Lássunk egy konkrét példát:
'elso|masodik' esetében a split_str('elso|masodik','|',2) visszatérő értéke a 'masodik'
viszont:
split_str('elso','|',2) üres lesz. Ilyen esetben kéne vizsgálni, hogy van-e '|' a bemenetben, ha pedig nincs, térjen vissza az eredeti stringgel.
- A hozzászóláshoz be kell jelentkezni
COALESCE kell neked szerintem, valahogy igy:
RETURN COALESCE(REPLACE(...), x)
Ha a replace NULL-t ad, akkor COALESCE x-et teszi a helyere.
- A hozzászóláshoz be kell jelentkezni
split_str('z|ta','|',1000)-nél pedig hogy van-e 999 '|' a bemenetben?
--
ne aggódj zita, te még kijuthatsz brüsszelbe!
- A hozzászóláshoz be kell jelentkezni
Az se lenne rossz egy komolyan felépített függvénynél. Habár az én esetemben 2 változat van: elso|masodik vagy elso felépítésű string. Ezért lett jó végül a substring_index jobb oldalra applikálva.
- A hozzászóláshoz be kell jelentkezni