2014-01-30 51 views
3

對不起,我的英語。

我試圖找到這個查詢文本與正則表達式:

MySql,在段落中找到與正則表達式

SELECT * FROM p_posts where Text REGEXP '[[:<:]]Liberty[[:>:]]'and Text REGEXP '[[:<:]]Rig.*[[:>:]]'and Text REGEXP '[[:<:]]7[[:>:]]'and Text REGEXP '[[:<:]]22[[:>:]]' 



一切工作正常。但現在我需要找到記錄,這些單詞在一個段落中。例如,如果單詞Liberty和編號22不在一個段落中,則該記錄無效。

請幫忙。
謝謝。

回答

1

這對於MySQL正則表達式來說會很棘手,因爲你既沒有lookarounds也沒有非貪婪的匹配。

我建議你根據段落分隔符來分割字符串,然後搜索段落字符串中的匹配項。這是從here截取的示例分割功能:

CREATE FUNCTION SPLIT_STR(
    x VARCHAR(255), 
    delim VARCHAR(12), 
    pos INT 
) 
RETURNS VARCHAR(255) 
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
     LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
     delim, '');