【问题标题】:MySQL SELECT REPLACE part of stringMySQL SELECT REPLACE 字符串的一部分
【发布时间】:2016-07-12 07:37:36
【问题描述】:

我有一列包含这样的数据:

http://www.example.com/category/link.html
http://www.example2.com/category2/link.html
http://www.example3.com/directory/category/link.php
http://www.example4.com/category4/link.php
http://www.example5.com/directory/link.html

我想选择这些链接中不同的domain.com 部分,然后将其插入另一列

SELECT DISTINCT REPLACE(domain,'http://www.','') AS domain FROM table;

这会选择没有http://www. 的所有内容如何删除链接的其余部分,所以我留下domain.com,然后将其插入另一列?

【问题讨论】:

    标签: mysql select replace substring


    【解决方案1】:

    试试这个:

    SELECT DISTINCT SUBSTRING_INDEX(REPLACE(domain,'http://www.',''), '/', 1) AS domain
    FROM mytable
    

    在从域字符串中消除'http://www.' 之后应用SUBSTRING_INDEX,返回第一次出现'/' 之前的字符串部分。

    Demo here

    【讨论】:

    • 如何将结果插入另一列?
    • @user3312792 只需执行UPDATE。这实际上取决于您要更新哪些行。
    • UPDATE mytable SET field = SELECT DISTINCT SUBSTRING_INDEX(REPLACE(domain,'',''), '/', 1) AS domain FROM mytable ?
    • @user3312792 不,您不能以这种方式更新。您可以通过UPDATE mytable SET filed = SUBSTRING_INDEX(REPLACE(domain,'',''), '/', 1) 逐行更新。
    【解决方案2】:

    您可以使用substring_index() 执行此操作。例如,这可能适用于您的数据:

    select substring_index(substring_index(col, '/', 3), '.', -2) as domain
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2012-04-06
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多