2012-07-03 46 views
0

我在我的MySQL數據庫中有一列存儲文件路徑。我試圖找出一個查詢,該查詢將返回給定字符串(或根目錄,給定無字符串)的文件路徑中的下一個文件夾。所以說我有以下幾點:查詢部分文件路徑

/this/is/my/folder 
/this/is/another/folder 
/folder/one 

我的查詢會返回'this'和'folder'。或者如果我給了它字符串'/ this/is /',它會返回'我'和'另一個'。這在同一個查詢中可能是不可能的,所以如果我需要兩個查詢,我可以添加代碼邏輯。

我相信我可以用mysql中的正則表達式來做到這一點,但我不確定是否有另一種方法在mysql中執行此操作?

謝謝。

回答

2

您可以使用MySQL的SUBSTRING_INDEX()函數抽取您需要的部分:

SELECT DISTINCT SUBSTRING_INDEX(
     SUBSTRING_INDEX(
      Folder, 
      @querystring, 
      1 + CHAR_LENGTH(@querystring) - CHAR_LENGTH(
      REPLACE(@querystring, '/', '') 
      ) 
     ), 
     '/', 
     -1 
     ) 
FROM mytable 
WHERE Folder LIKE CONCAT(@querystring, '%'); 

看到它的sqlfiddle

+0

完美!非常感謝! – Nick