MySQL で該当する場合にのみ、文字列列から数値をキャストして更新する方法は?
MySQL から CEIL() 関数を使用できます。まずはテーブルを作成しましょう。ここでは、最初の列を VARCHAR として取得しています。
mysql> create table DemoTable
-> (
-> Value varchar(20),
-> UpdateValue int
-> );
Query OK, 0 rows affected (1.08 sec)
insert コマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(Value) values('100');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Value) values('false');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Value) values('true');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable(Value) values('1');
Query OK, 1 row affected (0.07 sec)
select ステートメントを使用してテーブルのすべてのレコードを表示します。
mysql> select *from DemoTable;
これにより、次の出力が生成されます。
+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100 | NULL |
| false | NULL |
| true | NULL |
| 1 | NULL |
+-------+-------------+
4 rows in set (0.00 sec)
以下は、該当する場合にのみ文字列列から数値をキャストおよび更新するクエリです。
mysql> update DemoTable
-> set UpdateValue=ceil(cast(Value AS char(7)));
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4 Changed: 4 Warnings: 0
テーブルのレコードをもう一度確認してみましょう。
mysql> select *from DemoTable;
これにより、次の出力が生成されます。
+-------+-------------+
| Value | UpdateValue |
+-------+-------------+
| 100 | 100 |
| false | 0 |
| true | 0 |
| 1 | 1 |
+-------+-------------+
4 rows in set (0.00 sec)