选择字符串中所有出现的子字符串的位置

时间:2012-09-04 06:16:40

标签: mysql replace

我试图在数据库字段中出现所有子字符串,并在每个字符串之后获取下一个索引的位置。到目前为止我所做的是获得第一次出现以及后面的下一个字符串的位置如下:

SELECT dataset.id,
       SUBSTRING(dataset.text, LOCATE('XXXX', dataset.text) + LENGTH('XXXX')) 
FROM datatable as dataset

任何帮助请让所有事件发生?

1 个答案:

答案 0 :(得分:0)

也许这可能会有所帮助:

delimiter //
CREATE FUNCTION getpos(haystack VARCHAR(255), search VARCHAR(10))
RETURNS VARCHAR(255)
BEGIN
    DECLARE ret VARCHAR(255);
    DECLARE pos INT;
    SET ret = "";
    SET pos = LOCATE (search, haystack);
    WHILE (pos > 0) DO
        SET ret = CONCAT_WS (',', ret, pos);
        SET pos = LOCATE (search, haystack, pos+1); 
    END WHILE;
    RETURN ret;
END// 

然后选择:

SELECT dataset.id, getpos (dataset.text, 'XXXX') FROM datatable as dataset