Autor Zpráva
drubez
Profil *
Ahojte,

byl by tu někdo od toho srdce a napsal mi jednoduchou proceduru pro MySQL, která má za úkol jediné: vezme string, nahradí v něm řetězec 'a' za 'b' a ten vrátí.

Tedy obdoba tohoto pseudokódu:
zamen_text($input_text)
{
   return replace('a', 'b', $input_text)
}

Parametr $input_text by měl být dlouhý text, žádný krátký varchar (jestli to hraje nějakou roli).

Snažím se o to už dvě hodiny, ale pořád mi to háže nějaký errory. Přestože googlim jak divý, nedokážu se dobrat k jedinýmu funkčnímu řešení.


Tak jako vždy, krátce po položení dotazu vyřešeno :)
Ale aktuální dotaz zní: jak tuto proceduru zavolat - vyseletit z ní výsledek?

Dejme tomu, že ji chci použít v podmínce where
SELECT 
    *
FROM pages 
WHERE zamen_text(pages.perex) LIKE '%nejaky string%'

Vím, že se volá přes CALL, ale nevím, jak to zapasovat do výše uvedeného dotazu
Kcko
Profil
Nepotřebuješ volat žádnou proceduru.

DROP FUNCTION IF EXISTS myFn;
DELIMITER $$
CREATE FUNCTION myFn(inText TEXT, letter1 CHAR, letter2 CHAR)
  RETURNS TEXT READS SQL DATA
BEGIN
    RETURN  REPLACE(inText, letter1, letter2);
END;
$$
DELIMITER ;

SELECT 
    *
FROM pages 
WHERE myFn(pages.perex, "A", "B")  LIKE '%nejaky string%' 
drubez
Profil *
oo vřele díky, takže jsem si měl koukám vytvořit funkci, ne proceduru. Rozdíl mezi tím jsem doteď neznal.
Ještě jednou díkes

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0