2017-12-02 11 views
-1
SELECT * 
    FROM rlist 
    WHERE rlist.name LIKE '%$textInput%' 
    AND rlist.type='f' 
    ORDER BY CASE WHEN rlist.name = '$textInput' THEN 0 
     WHEN rlist.name LIKE '$textInput%' THEN 1 
     WHEN rlist.name LIKE '%$textInput%' THEN 2 
     WHEN rlist.name LIKE '%$textInput' THEN 3 
     ELSE 4 
    END, rlist.name ASC 

にパスの拡張子を見つけ、名前欄に私はこのようなファイル名のパスを持っている:は、mysqlのクエリ

ftp://mtftp/Adobe_Products/Adobe dmg Converter 10.0 Mac.dmg 

または

ftp://myftp/Adobe_Products/Adobe_After_Effect 

ユーザーは、たとえば検索するときに、今私がしたいです: dmgちょうどクエリがファイル名の部分で実行されていません

私の場合、私はzipを検索すると、私のクエリの結果はterrですZipファイルがたくさんあるので、ibleですが、ユーザーにはちょうどwinzipが必要です!

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- SQLクエリ – Strawberry

答えて

0

以下のような検索キーワードで終わる名前だけを検索する:) この場合はuが見られるように、私は、関数を定義します! DELIMITER $$ CREATE DEFINER=ルート@ localhostとFUNCTIONある、getPath ( pathTypeあなたがパスの拡張子を分離し、パスがディレクトリを参照する場合は01を、それを無視することができます。この機能でVARCHAR(2), URL VARCHAR(300)) RETURNS varchar(300) CHARSET utf8 BEGIN DECLARE path_name varchar(300); IF pathType = 'f' THEN SET path_name = REVERSE (SUBSTRING(REVERSE(url), INSTR(REVERSE(url), '.') +1, 999)); ELSE SET path_name = url; END IF; RETURN (path_name); END$$ DELIMITER ;

0

てみた検索キーワードの前に.を追加し、私はそれを解決

WHERE rlist.name LIKE '%.$textInput' 
+0

が機能しません! 私は、rlist.nameの列には私はディレクトリのパスと**ファイルのパス**を持っていると言ったので、私はクエリを実行するときに私はファイルの例外を除いて全体のパスで検索したい –

+0

もっと明快さが必要です。あなたが与えた例がはっきりしていないので、あなたの質問をより多くの例で更新してください – Lepanto