MariaDBでSELECT結果を自由自在に整形!FORMATの使い道と代替手段を徹底解説


MariaDBのFORMATキーワードは、SELECTクエリの結果の表示形式を制御するために使用されます。 データベースから取得したデータを、より読みやすく、理解しやすい形式で表示することができます。

構文

SELECT
  <列名1> [AS <別名1>],
  <列名2> [AS <別名2>],
  ...
FROM
  <table>
[WHERE <条件式>]
[ORDER BY <列名> [ASC | DESC]]
[LIMIT <行数>]
[OFFSET <開始行>]
[FOR UPDATE]
[FOR SHARE]
[GROUP BY <列名>]
[HAVING <条件式>]
[WITH <共通表式句>]
;

FORMAT <フォーマットオプション>

オプション

  • HTML: 結果をHTMLテーブルとして表示します。
  • CSV: 結果をCSV形式で表示します。
  • JSON: 結果をJSON形式で表示します。
  • TRADITIONAL: 従来のMariaDBの表示形式を使用します。
  • UNALIGNED: 列を揃えずに表示します。
  • TAB: 各列の間にタブ文字で区切ります。
  • COLUMNS: 結果を列ごとに区切って表示します。
  • LINES: 結果を1行ごとに区切って表示します。 これがデフォルトのフォーマットです。

次の例では、customersテーブルからすべての顧客情報を取得し、結果をHTMLテーブル形式で表示します。

SELECT
  customer_name,
  customer_email,
  customer_city
FROM
  customers
;

FORMAT HTML;

このクエリを実行すると、次のようになります。

<table>
  <tr>
    <th>顧客名</th>
    <th>メールアドレス</th>
    <th>市区町村</th>
  </tr>
  <tr>
    <td>田中 太郎</td>
    <td>[email protected]</td>
    <td>東京</td>
  </tr>
  <tr>
    <td>佐藤 花子</td>
    <td>[email protected]</td>
    <td>大阪</td>
  </tr>
</table>
  • FORMATキーワードは、ステートメントの最後に指定する必要があります。
  • 複数のフォーマットオプションを指定することはできません。
  • FORMATキーワードは、SELECTクエリのみで使用できます。


数値のフォーマット

SELECT
  FORMAT(sales_amount, 2) AS 売上金額
FROM
  sales
;
売上金額
-------
12,345.67
9,876.54
3,210.00

日付のフォーマット

次の例では、ordersテーブルのorder_date列の注文日を、YYYY-MM-DD形式で表示します。

SELECT
  FORMAT(order_date, '%Y-%m-%d') AS 注文日
FROM
  orders
;
注文日
-------
2023-12-31
2024-01-01
2024-01-31

次の例では、customersテーブルのcustomer_name列の顧客名を、大文字に変換して表示します。

SELECT
  UPPER(customer_name) AS 顧客名
FROM
  customers
;
顧客名
-------
TANAKA TARO
SATOH HANAKO
MURAKAMI YUKI

上記の例はほんの一例です。 FORMATキーワードと組み合わせて使用できるさまざまな関数やフォーマットオプションがあります。 詳細については、MariaDBの公式ドキュメントを参照してください。



サブクエリ

サブクエリを使用して、必要な形式でデータを抽出することができます。

利点

  • 計算や集計処理も可能
  • 柔軟性が高い: 複雑なフォーマットにも対応可能

欠点

  • パフォーマンスが低下する場合がある
  • 複雑なクエリになりがち


SELECT
  CONCAT(customer_name, ' (', customer_email, ')') AS フォーマット済み顧客情報
FROM
  customers
;

クライアントツール

データベースクライアントツールの中には、結果を独自の形式で表示したり、CSVやJSONなどのファイル形式にエクスポートしたりできるものがあります。

利点

  • データを簡単に加工できる
  • クエリを記述する必要がない

欠点

  • 追加のソフトウェアが必要になる場合がある
  • 使用しているツールによって機能が異なる


  • MySQL Workbench を使用して、結果を CSV 形式でエクスポートする

プログラミング言語

プログラミング言語を使用して、データベースから取得したデータを必要な形式に変換することができます。

利点

  • 複雑な処理にも対応可能
  • 柔軟性と制御力が高い

欠点

  • 開発に時間がかかる
  • プログラミングスキルが必要


import mysql.connector

# データベースへの接続
db = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="database_name"
)

# データの取得
cursor = db.cursor()
cursor.execute("SELECT customer_name, customer_email FROM customers")
results = cursor.fetchall()

# データの加工
formatted_data = []
for row in results:
    formatted_data.append(f"{row[0]} ({row[1]})")

# 加工結果の表示
print(formatted_data)

ストアドプロシージャ

ストアドプロシージャを使用して、データベースサーバー側でフォーマット処理を行うことができます。

利点

  • コードを再利用できる
  • クライアント側で複雑な処理を行う必要がない

欠点

  • 開発とメンテナンスが複雑になる
  • データベースサーバーへの負荷が増加する


CREATE PROCEDURE format_customer_data()
BEGIN
    SELECT
        CONCAT(customer_name, ' (', customer_email, ')') AS フォーマット済み顧客情報
    FROM
        customers
;
END PROCEDURE;

ビュー

ビューを使用して、必要な形式でデータを仮想的に表示することができます。

利点

  • 既存のテーブルを基に新しいビューを作成できる
  • クエリを記述する必要がない

欠点

  • データベースサーバーへの負荷が増加する
  • ビューを更新するには、基盤となるテーブルを更新する必要がある
CREATE VIEW formatted_customers AS
SELECT
    CONCAT(customer_name, ' (', customer_email, ')') AS フォーマット済み顧客情報
FROM
    customers
;