2
我想接受PHP的preg_match和MySQL的LIKE運算符可以使用的格式。在Regexp和MySQL之間轉換LIKE
這樣做的原因是這些條件用於代碼的兩個不同部分,一個用於將條件與數據匹配的速度顯着更快,另一個用於將數據與條件匹配的速度顯着更快。
我想爲用戶提供給類似的能力:
'hostname' 'match' '*.core-*-??.foo.com'
對於MySQL將使用:
'%.core-%-__.foo.com'
爲的preg_match它會使用這樣的:
'/.*\.core-.*-..\.foo\.com$/'
我確定有人已經想出了允許便攜式匹配這兩個系統。
另一種方法是在MySQL中使用正則表達式,但我不確定從可伸縮性的角度來看這個想法有多好。
它刪除了斜槓和星號。在 - 之間應該有一個星號,它在MySQL中轉換爲%,在正則表達式中使用星號和星號。這個?在正則表達式中轉換爲斜槓和點。 – adama
「*另一種方法是在MySQL中使用正則表達式,但我不確定從可伸縮性的角度來看這個想法有多好。*」 - 這絕對是要走的路,但它既不是簡單的'LIKE'模式當模式以通配符開始時,匹配可以避免表掃描(所以兩者都需要全表掃描並且不好縮放)。 – eggyal