MySQLで条件が真の場合に値へ特殊文字を設定する方法
条件分岐にはIF()関数を使用する
MySQLで条件が真(true)の場合に特定の値を、偽の場合に特殊文字を表示したいときは、IF()関数を使用します。まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable637
(ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,ClientName varchar(100),ClientAge int
);
Query OK, 0 rows affected (0.82 sec)レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable637(ClientName,ClientAge) values('Chris',23);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('Robert',24);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('David',57);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable637(ClientName,ClientAge) values('Carol',60);
Query OK, 1 row affected (0.13 sec)レコードの確認
SELECT文を使用して、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable637;
これにより、次のような出力が得られます。
+----------+------------+-----------+ | ClientId | ClientName | ClientAge | +----------+------------+-----------+ | 1 | Chris | 23 | | 2 | Robert | 24 | | 3 | David | 57 | | 4 | Carol | 60 | +----------+------------+-----------+ 4 rows in set (0.00 sec)
条件が真の場合に特殊文字を設定するクエリ
条件が真の場合に特殊文字を設定するには、以下のようなクエリを実行します。ここでは「ClientNameがNULLでなく、かつClientAgeが50より大きい」という条件を判定し、真であればクライアント名を、偽であればハイフンの並び(特殊文字)を表示しています。
mysql> select if(ClientName IS NOT NULL AND ClientAge > 50,ClientName,'-------------') from DemoTable637;
実行結果は以下のとおりです。年齢が50以下のChrisとRobertの行にはハイフンが表示され、50より大きいDavidとCarolの行には名前が表示されていることがわかります。
+--------------------------------------------------------------------------+ | if(ClientName IS NOT NULL AND ClientAge > 50,ClientName,'-------------') | +--------------------------------------------------------------------------+ | ------------- | | ------------- | | David | | Carol | +--------------------------------------------------------------------------+ 4 rows in set (0.00 sec)
このように、IF()関数を使えば、条件の真偽に応じて表示する値を柔軟に切り替えることができます。条件式にはIS NOT NULLや比較演算子などを組み合わせられるため、実務のさまざまなシーンで活用できます。
-
MySQLで文字列や数値が混在するカラムから特定のレコードを取得する方法
文字列・数値・特殊文字が混在するカラムから特定のレコードを取得したい場合は、ORDER BY CAST() を活用すると便利です。この記事では、SUBSTRING() 関数と組み合わせて、「指定した文字列で始まるレコードの中から、数値部分が最も大きいもの」を抽出する方法を、実際のSQL例とともにわかりやすく解説します。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable2006 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Us
-
MySQLで列にENUM型を設定する方法
```html MySQLでは、テーブルを作成する際に、あらかじめ決められた文字列のリストから値を選ばせたい列に対してENUM型を設定できます。ENUMは、指定した候補値以外のデータが登録されるのを防ぎたい場合に便利なデータ型です。ここでは、実際にテーブルを作成しながら基本的な使い方を見ていきましょう。ENUM型を含むテーブルを作成するまず、学生の点数と合否ステータスを管理するテーブルを作成します。「StudentStatus」列には「First」「Second」「Fail」の3つの値のみを許可するENUM型を設定しています。mysql> create table DemoTable20