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

数値を使ってMySQLのVARCHAR型カラムを検索する方法

MySQLで数値をもとにVARCHAR型カラムを検索したい場合は、INSERT()関数を活用します。この関数を使うと、数値だけの値に区切り文字(例:スラッシュ)を挿入した文字列を動的に生成でき、その結果とカラムの値を比較することができます。

INSERT()関数のパラメータ

INSERT()関数は以下の4つの引数を受け取ります。

パラメータ説明
str変更対象となる元の文字列
positionstr2を挿入する位置
number置き換える文字数
str2strに挿入する文字列

サンプルテーブルの作成

まず、検索対象となるテーブルを作成します。

mysql> create table DemoTable
-> (
-> Code varchar(100)
-> );
Query OK, 0 rows affected (0.82 sec)

レコードの挿入

次に、INSERTコマンドを使っていくつかのレコードを登録します。

mysql> insert into DemoTable values('958575/98') ;
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values('765432/99');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('983456/91');
Query OK, 1 row affected (0.15 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

上記のクエリを実行すると、次のような結果が得られます。

+-----------+
| Code |
+-----------+
| 958575/98 |
| 765432/99 |
| 983456/91 |
+-----------+
3 rows in set (0.00 sec)

数値を使ったVARCHARカラムの検索クエリ

ここで本題です。数値「76543299」からINSERT()関数を使って「765432/99」という形式の文字列を生成し、WHERE句で比較することで検索を行います。

mysql> select *from DemoTable where Code =INSERT(76543299,7,0,'/');

出力結果

このクエリを実行すると、該当する1件のレコードが正しく取得できます。

+-----------+
| Code |
+-----------+
| 765432/99 |
+-----------+
1 row in set (0.00 sec)

ポイント解説

この例では、INSERT(76543299, 7, 0, '/') のように指定しています。これは「76543299」という数値の7文字目の位置に、0文字分を置き換えつつ「/」を挿入するという意味になります。その結果、「765432/99」という文字列が生成され、Codeカラムの値と一致するため検索に成功します。

なお、大量データを扱う場合、WHERE句内で関数を使用するとインデックスが利用されずパフォーマンスに影響が出る可能性があります。実運用では、検索条件側をできるだけシンプルに保つか、生成列(GENERATED COLUMN)やアプリケーション側での前処理を検討するとよいでしょう。

  1. phpMyAdminでMySQLデータベースのカラムにAUTO_INCREMENT(自動採番)を追加する方法

    MySQLデータベースのカラムにAUTO_INCREMENT(自動インクリメント)を追加したい場合、ALTERコマンドを使用することで簡単に実現できます。本記事では、SQLコマンドによる方法と、phpMyAdminの画面操作による方法の2つをわかりやすく解説します。ALTERコマンドでAUTO_INCREMENTを追加する基本構文AUTO_INCREMENTを追加するには、以下のような構文を使用します。ALTER TABLE テーブル名 MODIFY カラム名 INT NOT NULL AUTO_INCREMENT;この構文では、既存のカラム定義をMODIFY句で変更し、NOT NULL制約と

  2. Javaを使ってDATE型の値をMySQLカラムに挿入する方法【PreparedStatement活用】

    はじめに JavaからMySQLのDATE型カラムに日付データを挿入したい場合、PreparedStatementを使用するのが最も安全で推奨される方法です。SQLインジェクション対策にもなり、日付型の変換もスムーズに行えます。 本記事では、Javaプログラムから現在の日付をMySQLテーブルに挿入する手順を、サンプルコード付きでわかりやすく解説します。 1. サンプルテーブルの作成 まず、DATE型のカラム「ArrivalDate」を含むテーブルを作成します。以下はMySQLでの作成例です。 mysql> create table DemoTable( PassengerId