0

私の MySQL データベースには、ファイル パスを格納する列があります。文字列が指定されたファイル パス (または文字列が指定されていないルート ディレクトリ) の次のフォルダーを返すクエリを見つけようとしています。だから私は次のものを持っているとしましょう:

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

私のクエリは「this」と「folder」を返します。または、文字列「/this/is/」を指定すると、「my」と「another」が返されます。これは同じクエリでは不可能な場合があるため、2 つのクエリが必要な場合はコード ロジックを追加するだけです。

mysql で正規表現を使用してこれを行うことができると信じていますが、mysql でこれを行う別の方法があるかどうかはわかりませんでした。

ありがとう。

4

1 に答える 1

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で参照してください。

于 2012-07-03T19:22:03.237 に答える