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

MySQLのVARCHAR型カラムで末尾の文字を削除し、新しい値(VARCHAR番号)に置き換える方法

はじめに

MySQLでは、CONCAT()関数とSUBSTRING()関数を組み合わせることで、VARCHAR型カラムの末尾の文字を削除し、その位置に新しい値を追加することができます。この記事では、実際のSQL例を使ってその手順をわかりやすく解説します。

ステップ1:テーブルを作成する

まず、VARCHAR型のカラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    Value varchar(100)
);
Query OK, 0 rows affected (1.80 sec)

ステップ2:レコードを挿入する

INSERT文を使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable values('100');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('1244');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('15789');
Query OK, 1 row affected (0.18 sec)

ステップ3:現在のレコードを確認する

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

mysql> select *from DemoTable;

以下のような出力が得られます。

+-------+
| Value |
+-------+
| 100   |
| 1244  |
| 15789 |
+-------+
3 rows in set (0.07 sec)

ステップ4:末尾の文字を削除して新しい値を追加するUPDATE文

ここが本題です。各レコードの末尾の1文字を削除し、代わりに「55」を追加するには、次のクエリを実行します。

mysql> update DemoTable set Value=concat(substring(Value,1,length(Value)-1), '55');
Query OK, 3 rows affected (0.23 sec)
Rows matched: 3 Changed: 3 Warnings: 0

このクエリの仕組みを分解して見てみましょう。

  • length(Value):文字列全体の長さを取得します。
  • substring(Value, 1, length(Value)-1):先頭から「長さ−1」文字分を取り出すことで、末尾の1文字を除外します。
  • concat(..., '55'):取り出した文字列の後ろに新しい値「55」を連結します。

ステップ5:更新結果を確認する

もう一度テーブルの内容を確認してみましょう。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+--------+
| Value  |
+--------+
| 1055   |
| 12455  |
| 157855 |
+--------+
3 rows in set (0.00 sec)

出力を見ると、「100」→「1055」、「1244」→「12455」、「15789」→「157855」と、それぞれ末尾の1文字が削除され、代わりに「55」が追加されていることがわかります。

まとめ

VARCHAR型のカラムに対しては、concat(substring(カラム名, 1, length(カラム名)-1), '追加したい文字列')という構文を使うことで、末尾の文字を削除しながら新しい値へ置き換えることができます。文字列の一部を動的に更新したい場面で、ぜひ活用してみてください。

  1. MySQLで英字と数字が混在する列の値を正しくソートする方法

    MySQLでは、英字と数字が混在するデータ(例:「J23」「C13」など)が格納された列を単純にORDER BY句でソートすると、すべて文字列として扱われるため、意図した通りの順序にならないことがあります。本記事では、LEFT関数・SUBSTR関数・CAST関数を組み合わせて、文字部分と数値部分をそれぞれ正しく並べ替える方法を、実際のSQL例とともに解説します。 サンプルテーブルの作成 まず、ソート対象となるテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Code varchar(20) ->

  2. 【MySQL】特定の列の値を先頭に固定し、残りの行をランダム順で表示する方法

    MySQLで行をランダムに並べ替えるには RAND() 関数を使用しますが、さらに「特定の列の値だけは必ず先頭に固定して表示したい」という場合には、ORDER BY 句と組み合わせることで実現できます。この記事では、特定の値を持つ行を常に最上位に固定しつつ、それ以外の行をランダムな順序で表示する方法を、実際のSQL例とともに解説します。1. サンプルテーブルを作成するまず、数値を格納するシンプルなテーブルを作成します。mysql> create table DemoTable1921    (    Numb