Montando un buscador, me han pedido que ordene los resultados por el número de coincidencias dentro del texto, esto se puede hacer con MATCH AGAINST pero implica que la búsqueda se centraría en un campo de texto que tenga un índice FULLTEXT, el problema es que en mi caso es una vista y tiene que buscar en una concatenación de campos por lo que queda descartada esta opción.
La solución la he hecho con una función para contabilizar el número de ocurrencias dentro de la cadena.
DELIMITER $$ CREATE FUNCTION `num_coincidencias`( texto text , palabra varchar(100) ) RETURNS int NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN return ROUND ((LENGTH(texto) - LENGTH( REPLACE ( lower(texto), lower(palabra), ""))) / LENGTH(palabra)); END; $$ DELIMITER ; -- y asi podríamos usarlo select num_coincidencias('bla bla bla saf gsdafg sdfg bla', 'bla') as numero_blas
0 Comentarios.