2014-09-05 46 views
2

它SEMS奇怪,但我無法找到一個快速和簡單的方法來解決我的任務:如何獲得左子在MySQL

我有不同的絕對路徑許多行,如:

  • /application/themes/openbank/images/prettyPhoto/light_square/default_thumbnail.gif
  • /application/themes/openbank/images/default_thumbnail.png
  • /application/themes/openbank/images/prettyPhoto/light_square/a_s.pdf

,我想他們在

  • 分裂PARENT_PATH(「如/應用/主題/ openbank /圖像/ prettyPhoto/light_square/「)
  • FILE_NAME(」 如default_thumbnail.gif「)

注意:文件名的lenght和隔板的數量是可變的

帶。

SUBSTRING_INDEX('/application/themes/openbank/images/prettyPhoto/light_square/default_thumbnail.gif', '/', -1) 

我正確地得到FILE_NAME, 但我不能找到一種方法來檢索左側部分。 我試過LEFT(),RIGHT(),並all other mysql's string function沒有成功

Linuxatico

+0

所有這些都是好的和完整的答案(VMai,Brian Ridgeway和Ronak Shah's),都值得一個「接受的答案標記」。我認爲最完整和最乾淨的是,@VMai之一,在癮,小提琴是非常自動說明。謝謝大家。 – linuxatico 2014-09-08 07:31:15

回答

1

另一種方式是LEFT,SUBSTRING_INDEX和CHAR_LENGTH的組合: 我的解決方案需要與長度=長度字符串的左側部分(絕對路徑) - 長度(文件部分)。

SET @content = '/application/themes/openbank/images/prettyPhoto/light_square/default_thumbnail.gif'; 
SELECT 
    LEFT(
     @content, 
     CHAR_LENGTH(@content) - CHAR_LENGTH(SUBSTRING_INDEX(@content, '/', -1)) 
    ); 

看到在this fiddle工作的三個第一選擇。

我敢肯定,還有其他一些方法來獲得所需的結果。

3

嘗試下面讓PARENT_PATH

select reverse(substring(reverse('/application/themes/openbank/images/prettyPhoto/light_square/default_thumbnail.gif'),instr(reverse('/application/themes/openbank/images/prettyPhoto/light_square/default_thumbnail.gif'),'/'))) 
+0

+1你比我快5秒! :) – 2014-09-05 18:05:54

+0

@Bill Karwin .. :) – 2014-09-05 18:06:27

2
select substr(path, 1, instr(path, substring_index(path, '/', -1)) - 1) as "PARENT_PATH", substring_index(path, '/', -1) as "FILE_NAME" from table1; 
+0

+1,包括你的解決方案在我的小提琴。我希望你不介意。 – VMai 2014-09-05 18:35:39