說我有一個表叫People
與PersonID
列和Name
,我可以選擇一個人的名字像裏面:嵌套的「SQL SELECT語句」爲/正則表達式的操作
SELECT Name FROM People WHERE PersonID = 1
這對於這個例子將返回'John'。
我也有另一個表稱爲ForumPosts
與領域ForumPostID
和PostContent
其中PostContent只是TEXT
這對於這個例子的目的可以是像"My Name is John"
或"John likes football"
現在我要對其執行了基於查詢給定的初始PersonID將返回來自ForumPosts的所有行,其中Person的名稱與PostContent字段中包含的單詞相匹配。
一個正則表達式將匹配單個單詞(或在這種情況下,人的名字)是:
[[:<:]]*Person'sNameHere*[[:>:]]
所以最好我想我的SQL邏輯是這樣的:
Select * FROM ForumPosts WHERE PostContent
REGEX [[:<:]](SELECT Name FROM People WHERE PersonID = '1') [[:>:]]
不過我我不確定這是否甚至可能,或者我將如何構建查詢。
請注意,你正在嘗試做的,在這裏,不會規模非常好...使用'REGEXP' /'RLIKE'查詢,就像普通的'LIKE'操作符(在這種情況下有一個例外,這裏不重要),將要求服務器讀取和比較*每行*,*每次*您運行查詢,隨着數據增長而變慢。這些運算符不能使用索引進行優化。 –