MySQLで特定の下3桁の値を除外するクエリの書き方
テーブルから特定の下3桁を持つ値を除外してデータを取得したい場合は、NOT IN 演算子と RIGHT() 関数を組み合わせることで実現できます。ここでは、実際にサンプルテーブルを作成しながら手順を解説します。
1. サンプルテーブルを作成する
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable(Value int); Query OK, 0 rows affected (0.71 sec)
2. テーブルにレコードを挿入する
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> insert into DemoTable values(1234); Query OK, 1 row affected (0.54 sec) mysql> insert into DemoTable values(2345); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(7896); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(4321); Query OK, 1 row affected (0.15 sec)
3. 登録したレコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、以下のような結果が出力されます。
+-------+ | Value | +-------+ | 1234 | | 2345 | | 7896 | | 4321 | +-------+ 4 rows in set (0.00 sec)
4. 下3桁が特定の値であるレコードを除外する
下3桁が「234」または「321」であるレコードを除外したい場合は、次のようにクエリを記述します。
mysql> select *from DemoTable where right(Value,3) NOT IN('234','321');このクエリでは、RIGHT(Value, 3) によって各値の右側から3文字(下3桁)を取り出し、その結果が指定したリスト('234'、'321')に含まれない行だけを取得しています。
実行結果は以下のとおりです。
+-------+ | Value | +-------+ | 2345 | | 7896 | +-------+ 2 rows in set (0.00 sec)
ポイントのまとめ
RIGHT(カラム名, 3):値の末尾3文字(下3桁)を文字列として抽出する関数。NOT IN ('234', '321'):指定したリストに一致しない行のみを返す条件。- 除外したい下3桁のパターンは、カンマ区切りで自由に複数指定可能です。
このように、RIGHT() 関数と NOT IN を組み合わせれば、数値型のカラムでも簡単に下3桁による絞り込み・除外処理を実装できます。電話番号やID番号など、末尾の桁でフィルタリングしたい場面でぜひ活用してください。
-
【MySQL】空の値(空文字列)をNULLに変換するUPDATEクエリの書き方
MySQLでは、UPDATE文のSET句とWHERE句を組み合わせるだけで、カラムに入っている空の値(空文字列)をNULLへ簡単に変換できます。ここからは、実際のサンプルを使って手順を詳しく解説していきます。 1. サンプルテーブルを作成する まず、以下のコマンドでテーブルを作成しましょう。 mysql> create table DemoTable1315 -> ( -> CountryName varchar(10) -> ); Query OK, 0 rows affected (0.60 sec) 2. レコードを挿入する 次に、INSERTコマンドでレコー
-
【MySQL】SUM()関数を使って単一クエリで特定の列値ごとの複数カウントを取得する方法
特定の列値に基づくカウントを1つのMySQLクエリで複数取得するには、集計関数SUM()を活用します。MySQLでは「列 = 値」という条件式が真なら1、偽なら0を返すため、その結果をSUM()で合計することで、条件に一致する行数を数えられます。まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows af