У меня есть таблица 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)
вы можете использовать REGEXP_REPLACE
(если ваш MySQL/MariaDB поддерживает эту функцию) или (классический) SUBSTRING
в сочетании с LOCATE
:
UPDATE table1 SET host = SUBSTRING(host, 1, LOCATE('.', host)-1)
UPDATE table1 SET host = REGEXP_REPLACE(host, '\\..+', '')
Вы можете найти первое вхождение точки, а затем выполнить левую функцию, чтобы усечь строку.
update yourTable
set host = left(host,locate('.',host)-1);
REGEXP_REPLACE(host, '\\..+', '')