MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでPHPのbasename()関数と同等の処理を行う方法

PHPのbasename()関数は、ファイルへのパスを含む文字列が渡されると、そのファイルのベース名(ファイル名部分)を返します。MySQLでこれと同等の処理を実現するには、SUBSTRING_INDEX()関数を使用します。

テーブルの作成

まず、以下のようにテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Location varchar(200)
    -> );
Query OK, 0 rows affected (1.02 sec)

レコードの挿入

insertコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('C:\Web\Sum.java');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DemoTable values('E:\WebDevelopment\Image1.png');
Query OK, 1 row affected (0.42 sec)

レコードの確認

select文を使って、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable;

出力結果

+------------------------------+
| Location |
+------------------------------+
| C:\Web\Sum.java |
| E:\WebDevelopment\Image1.png |
+------------------------------+
2 rows in set (0.00 sec)

basename()相当の処理を実行するクエリ

以下は、MySQLでbasename()関数と同等の処理を行い、PHPのbasename()が返すのと同じ結果、つまりファイル名(ベース名)を取得するクエリです。

SUBSTRING_INDEX()の第3引数に「-1」を指定することで、区切り文字(ここではバックスラッシュ)より後ろにある最後の部分、すなわちファイル名だけを抽出できます。

mysql> select Location,
   -> SUBSTRING_INDEX(Location,'\\', -1) AS NameOfFile from DemoTable;

出力結果

+------------------------------+------------+
| Location | NameOfFile |
+------------------------------+------------+
| C:\Web\Sum.java | Sum.java |
| E:\WebDevelopment\Image1.png | Image1.png |
+------------------------------+------------+
2 rows in set (0.00 sec)

このように、SUBSTRING_INDEX()関数を活用すれば、MySQLだけでパス文字列からファイル名を簡単に取り出すことができます。Unix系のパス(スラッシュ区切り)の場合は、区切り文字を「'/'」に変更するだけで同様の処理が可能です。

  1. PHPとMySQLで時刻を扱う方法|strtotime()とDATE_FORMAT()による形式変換

    PHPで時刻形式を変換する方法 PHPで時刻データを扱う際、strtotime()関数を使えば、「8:55 PM」のような人間が読みやすい12時間制の表記を、データベースで扱いやすい24時間制(HH:MM:SS)へ簡単に変換できます。 PHPコード例 $timeValue = 8:55 PM; $changeTimeFormat = date(H:i:s, strtotime($timeValue)); echo(24時間制への変換結果=); echo($changeTimeFormat); このコードでは、まずstrtotime()が文字列「8:55 PM」をUNIXタイムスタンプに変換

  2. PHP変数「11:00 AM」をMySQLの時間形式に変換する方法

    PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2