1

データベース フィールド内の部分文字列のすべての出現箇所と、それぞれの後の次のインデックスの場所を取得しようとしています。私がこれまでに行ったことは、次のように、最初に出現した文字列とその後の次の文字列の位置を取得することです。

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

すべてのオカレンスを取得するために何か助けてください??

4

1 に答える 1

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
于 2013-03-09T18:30:28.370 に答える