MySQLで文字列カラムから先頭15文字のみを抽出する方法
文字列の値から先頭15文字だけを取り出したい場合は、MySQLのSUBSTR()関数を使用します。この関数は指定した開始位置から指定した文字数分の部分文字列を返すため、一覧ページなどで長いタイトルの冒頭だけを表示したい場面で非常に便利です。
サンプルテーブルを作成する
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Title varchar(100)
);
Query OK, 0 rows affected (0.69 sec)レコードを挿入する
続いて、INSERT文を使ってテーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('Introduction to MySQL');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('Introduction to Java');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('C in Depth with data structure and algorithm');
Query OK, 1 row affected (0.15 sec)登録データを確認する
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行すると、以下のような出力が得られます。
+----------------------------------------------+ | Title | +----------------------------------------------+ | Introduction to MySQL | | Introduction to Java | | C in Depth with data structure and algorithm | +----------------------------------------------+ 3 rows in set (0.00 sec)
SUBSTR()で先頭15文字を取得する
それでは、先頭15文字だけを取り出すクエリを実行してみましょう。SUBSTR()関数の第1引数に対象のカラム名、第2引数に開始位置(ここでは1文字目)、第3引数に取得する文字数を指定します。
mysql> select substr(Title,1,15) from DemoTable;
実行結果は以下のとおりです。
+--------------------+ | substr(Title,1,15) | +--------------------+ | Introduction to | | Introduction to | | C in Depth with | +--------------------+ 3 rows in set (0.00 sec)
補足:別名を付けて見やすくする
AS句を使えば、結果セットのカラム名に任意の別名を付けることができ、アプリケーション側での扱いも楽になります。
mysql> select substr(Title,1,15) AS ShortTitle from DemoTable;
なお、SUBSTR()はSUBSTRING()の別名(シノニム)であり、どちらの名前で呼び出しても同じ結果が得られます。UTF-8などのマルチバイト文字(日本語など)を含むカラムでも、この関数はバイト数ではなく文字数単位で処理されるため、日本語テキストの切り出しにもそのまま利用できます。
-
MySQLで条件に応じて同じ列の2つの値を連結する方法
MySQLで条件に応じて同じ列の2つの値を連結する方法 MySQLでは、max() などの集計関数と CASE 式を組み合わせることで、条件の異なる同じ列の値を1つの文字列として連結できます。この記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、create table コマンドでテーブルを作成しましょう。 mysql> create table DemoTable1869 ( Id int, &nb
-
MySQLで文字列や数値が混在するカラムから特定のレコードを取得する方法
文字列・数値・特殊文字が混在するカラムから特定のレコードを取得したい場合は、ORDER BY CAST() を活用すると便利です。この記事では、SUBSTRING() 関数と組み合わせて、「指定した文字列で始まるレコードの中から、数値部分が最も大きいもの」を抽出する方法を、実際のSQL例とともにわかりやすく解説します。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable2006 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Us