2012-09-04 89 views
1

我想要獲取數據庫字段中的子字符串的所有出現以及每個字符串之後的下一個索引的位置。什麼是迄今爲止我所做的是讓第一次出現後,它的下一個字符串的如下位置:選擇字符串中出現的所有子字符串的位置

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

任何幫助,請讓所有出現?

+0

你可以給你想要什麼例子? –

+0

ok @John Woo,在以下文本中: {第二個str返回字符串str中str substrtr的第一個出現的字符串} 我想在上面的文本中搜索單詞「str」的索引,所以結果應該是例如:12,29,53,77 – Bilal

+0

用PHP或其他方法做到這一點。數據庫可以保存和/或獲取數據。而已。 – fancyPants

回答

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 
相關問題