web-dev-qa-db-ja.com

MACアドレスを選択して同じ形式に更新する

私はmacaddress列を持つmysqlデータベースを持っています。これには、さまざまな形式の何千ものMACアドレスが含まれています。大文字、小文字、コロン付き。例については、以下を参照してください。

+-------------------+
| macaddress        |
+-------------------+
| 90CCAADD3341      |
+-------------------+
| 90:3f:ff:11:22:33 |
+-------------------+
| 33:44:aa:bb:34:6a |
+-------------------+
| 8801abcd3231      |
+-------------------+

この列のすべての行を一括更新して同じ形式にする方法はありますか?

コロンを付けずにすべて大文字にしてください。以下を参照してください。

+--------------+
| macaddress   |
+--------------+
| 90CCAADD3341 |
+--------------+
| 903FFF112233 |
+--------------+
| 3344AABB346A |
+--------------+
| 8801ABCD3231 |
+--------------+

どうすればこれを達成できますか?

3
TheOrdinaryGeek

テスト選択:

select macaddress, upper(replace(macaddress,':','')) as new_macaddress
from Macs;

更新:

update macs
set macaddress = upper(replace(macaddress,':',''));

フィドル

テストデータ:

create table macs
(
macaddress varchar(20)
);

insert into macs values('90CCAADD3341');

insert into macs values('90:3f:ff:11:22:33');

insert into macs values('33:44:aa:bb:34:6a');

insert into macs values('8801abcd3231');

ドキュメントのリンク:

PPER()

REPLACE()

2
Philᵀᴹ