Ho buttato giù una function che dovrebbe fare quello che chiedi anche se l'ho testata solo molto superficialmente:
codice:
CREATE FUNCTION my_find(
x VARCHAR(255),
delim VARCHAR(12),
find VARCHAR(255)
)
RETURNS VARCHAR(255)
BEGIN
DECLARE res VARCHAR(255);
DECLARE tmp VARCHAR(255);
DECLARE tmp2 VARCHAR(255);
DECLARE str VARCHAR(255);
SET tmp = '';
SELECT colonna FROM tabella INTO str;
REPEAT
SELECT SUBSTRING_INDEX(str, ' ', 1) INTO tmp2;
IF STRCMP(SUBSTRING(tmp2, 1, LENGTH(find)), find) = 0 THEN
SET tmp = CONCAT(tmp, tmp2, ' ');
END IF;
SET str = SUBSTRING(str, LENGTH(tmp2) + 2);
UNTIL str = ''
END REPEAT;
RETURN tmp;
END
che puoi invocare così:
codice:
SELECT my_find(colonna, ' ', 'stringa_di_ricerca') as risultato FROM tabella;
in cui a colonna, tabella e stringa_di_ricerca sostituirai i giusti valori.
Nel caso:
colonna contiene: pluto pippo paperino paperoga paperone poldo
stringa_di_ricerca: 'pa'
restituisce:
paperino paperoga paperone