2016-12-13 45 views
0

我正在將一些工作流從MySQL遷移到MonetDB。這已經阻礙了我的進步,到目前爲止有沒有辦法在MonetDB中獲得FIND_IN_SET功能

的一件事是在MonetDB缺乏FIND_IN_SET功能:

> SELECT FIND_IN_SET('b', 'a,b,c,d'); 
2 

我是靠這個功能用於將兩個路線之間的域定義。

任何想法如何在MonetDB中獲得具有合理性能的函數?

回答

1

您可以嘗試使用正則表達式。我向一個使用MySQL的人推薦過,這個人希望用逗號分隔的乾草堆找到多個針,也許它可以適應MonetDB?

SELECT name FROM table WHERE CONCAT(',', DataID, ',') REGEXP ',(222|777|400),' 
+0

感謝您的回答。不過,我需要一些能夠給我目標內查詢索引的東西(請注意在我的問題中'2'的返回值)。 'REGEXP'不會這樣做...... – ostrokach

+1

猜測我只帶球的一部分。 MonetDB使用pcre正則表達式,理論上它應該能夠對所有匹配進行標記,但不會返回您正在查找的特定索引。主要的問題是,你會嚴重影響性能,這不是你使用MonetDB的原因。 LOCATE()將返回匹配的字符串位置,但不能用於倍數。希望我能在這裏獲得更多幫助。 –

相關問題