MYSQL: замена полного доменного имени только на имя хоста

0

У меня есть таблица mysql с тремя полями

host              ipaddress      date
----              ---------      -----
server1.abc.com   10.1.1.1      2011-10-18 22:45:16
server1           10.1.1.1      2011-12-19 21:56:46
server2           11.1.1.1      2011-12-18 21:56:46
server2.abc.com   11.1.1.1      2011-12-17 21:56:46

Here,
host --> varchar
ipaddress --> varchar
date ---> datetime

Я хочу заменить все значения FQDN только именем хоста. Мой вывод должен выглядеть следующим образом:

host              ipaddress      date
----              ---------      -----
server1           10.1.1.1      2011-10-18 22:45:16
server1           10.1.1.1      2011-12-19 21:56:46
server2           11.1.1.1      2011-12-18 21:56:46
server2           11.1.1.1      2011-12-17 21:56:46

Я написал следующее:

UPDATE table1 SET host = TRIM(TRAILING '.' FROM host)
  • 0
    Вы используете версию mysql / mariadb, которая поддерживает "REGEXP_REAPLACE"? если это так, вы можете просто использовать эту функцию ( REGEXP_REPLACE(host, '\\..+', '')
Теги:
select
join
inner-join
crud

2 ответа

0

вы можете использовать REGEXP_REPLACE (если ваш MySQL/MariaDB поддерживает эту функцию) или (классический) SUBSTRING в сочетании с LOCATE:

  1. UPDATE table1 SET host = SUBSTRING(host, 1, LOCATE('.', host)-1)
  2. UPDATE table1 SET host = REGEXP_REPLACE(host, '\\..+', '')
0

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

update yourTable 
   set host = left(host,locate('.',host)-1);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню