MYSQL:仅使用主机名替换FQDN

时间:2018-04-04 15:28:14

标签: mysql select join inner-join crud

我有三个字段的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)

2 个答案:

答案 0 :(得分:0)

您可以使用REGEXP_REPLACE(如果您的MySQL / MariaDB支持此功能)或(经典)SUBSTRINGLOCATE结合使用:

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

答案 1 :(得分:0)

您可以找到第一个出现的点,然后执行左侧函数来截断字符串。

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