2017-01-22 5 views
0

私は様々なファイルの多くのURLを含む列を持つテーブルを持っています。構造体、フォルダ、ファイルのようなディレクトリを作成します。sql-リンクから構造体のようなディレクトリを作成

フォルダまず、クエリでhttp://abcd.com/を入力したクエリにhttp://abcd.com/efgh/に入ったとき、それが生成する必要があり

╔════╦═════════════════╗ 
║ ║     ║ 
╠════╬═════════════════╣ 
║ 1 ║ efgh   ║ 
║ 2 ║ jhksdh   ║ 
║ 3 ║ dsfsdh   ║ 
║ 4 ║ lmn.txt   ║ 
╚════╩═════════════════╝ 

を作る必要があるとき

links 
---------- 
http://abcd.com/efgh/hhg.txt 
http://abcd.com/efgh/abc/bsbs/hsgs.txt 
http://abcd.com/lmn.txt 
http://abcd.com/jhksdh/khsdh/khd/abc.txt 
http://abcd.com/dsfsdh/khsdh/dsfsdf/bsbs.txt 

ファイル

╔════╦═════════════════╗ 
║ ║     ║ 
╠════╬═════════════════╣ 
║ 1 ║ abc    ║ 
║ 2 ║ hhg.txt   ║ 
╚════╩═════════════════╝ 

私ができます〜を構成するSUBSTRING_INDEX()文字列関数を使用したクエリ

+0

あなたは正規表現が必要ですか?あなたは、URLが発射されたときにこれらの結果をすべて得たいですか? – learner

+0

部分文字列も@learner – Azhar

答えて

1

これは、あなたが望む程度に十分ですか?

select l.* 
from links l 
where l.link like concat(@link, '/%') 

通常、このようなテーブルは、多くの場合、(適切には?)別の行として、すべてのレベルを持っているでしょうので、私は、お願いします。そして、次のクエリが何をしたいん

http://abcd.com/efgh/abc/bsbs/hsgs.txt 
http://abcd.com/efgh/abc/bsbs 
http://abcd.com/efgh/abc 
http://abcd.com/efgh 
http://abcd.com 
http:// 

::だから、linksはの行を持っているでしょう

select l.* 
from links l 
where l.link like concat(@link, '/%') and 
     l.link not like concat(@link, '/%/%'); 

データを変更することなく、これは一般的に動作します:

select concat(@link, '/', 
       substring_index(substring(@link, length(@link) + 1 
             ), 
           '/', 1 
          ) 
      ) 
from links l 
where l.link like concat(@link, '/%'); 
+0

すべてのレベルを別々の行として持つわけではありません。すべての直接リンク – Azhar

+1

@Azharが含まれています。 。 。私は答えを編集しました。 –

+0

どちらを使うべきですか?すべてエラーが発生しています – Azhar

0

はこれを試してみてくださいone

set @param = 'http://abcd.com/efgh/'; 
select 
distinct SUBSTRING_INDEX(REPLACE(link, @param, ''), '/', 1) as link 
from links 
where POSITION(@param IN link) > 0; 
関連する問題