Создать новый столбец в базе данных из данных в существующем столбце - PullRequest
2 голосов
/ 24 августа 2010

у меня есть стол

TableName: MACAddresses
Columns:
- Computer
- MACAddress

Я хотел бы создать сценарий sql, который создает новый столбец и правильно форматирует mac-адрес с двоеточием (то есть с подстрокой) - чтобы создать новый столбец с именем CorrectMAC

Как бы я сделал это с Oracle?

1 Ответ

5 голосов
/ 24 августа 2010

Вот некоторые тестовые данные:

SQL> select * from MACAddresses
  2  /

  COMPUTER MACADDRESS
---------- ------------
       100 123456789abc
       200 acef35dd6ecc

SQL>

Добавление нового столбца довольно просто:

SQL> alter table MACAddresses
  2      add corrected_MACAddress varchar2(17)
  3  /

Table altered.

SQL>

Обратите внимание, что вы не можете сделать его NOT NULL на этом этапе, потому что вы ужеесть несколько записей в таблице.Поэтому, если вы хотите применить такое ограничение, вам нужно сначала его заполнить.

Это самый простой способ обновления нового столбца.

SQL> update MACAddresses
  2      set corrected_MACAddress = substr(macaddress, 1,2)||':'||
  3                                 substr(macaddress, 3,2)||':'||
  4                                 substr(macaddress, 5,2)||':'||
  5                                 substr(macaddress, 7,2)||':'||
  6                                 substr(macaddress, 9,2)||':'||
  7                                 substr(macaddress, 11,2)
  8  /

2 rows updated.

SQL> select * from MACAddresses
  2  /

  COMPUTER MACADDRESS   CORRECTED_MACADDR
---------- ------------ -----------------
       100 123456789abc 12:34:56:78:9a:bc
       200 acef35dd6ecc ac:ef:35:dd:6e:cc

SQL>

Теперь, если у вас более сложный паттерн или вы хотите выполнять эту операцию на регулярной основе, я предлагаю вам затратить усилия, чтобы превратить ее в функцию и, возможно, удалить это повторение вв то же время.

Наконец, если вы хотите применить обязательное ограничение, вы можете:

SQL> alter table MACAddresses
  2       modify corrected_MACAddress not null
  3  /

Table altered.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...