【问题标题】:Trim unwanted text with start and end index in column使用列中的开始和结束索引修剪不需要的文本
【发布时间】:2020-03-23 14:57:38
【问题描述】:

我在 MySQL Server 5.7 数据库中有一个表。此表有一个名为“url”的varchar(256) 列。不幸的是,

此字段中的值包含路径,在导入 WordPress 博客时不包含。例如 url 'time-for-land-audit' 实际上存储为

'**/articles/2013/02/27/time-for-land-audit**' 在表格中。

我想更新此表中的所有记录以删除日期格式

 (**/articles/YYYY/MM/DD/**). 

如何一次更新所有记录以删除多余的空格?

【问题讨论】:

    标签: mysql sql wordpress mysql-workbench


    【解决方案1】:
    mysql> SELECT SUBSTRING_INDEX('/articles/2013/02/27/time-for-land-audit', '/', -1) AS short_url;
    +---------------------+
    | short_url           |
    +---------------------+
    | time-for-land-audit |
    +---------------------+
    

    作为 UPDATE,它看起来像这样:

    UPDATE mytable SET url = SUBSTRING_INDEX(url, '/', -1)
    

    有关文档,请参阅 https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index

    P.S.:请务必先在数据的测试样本上测试它是否符合您的要求!您不会想惊讶地发现您已经破坏了您唯一的数据副本。

    【讨论】:

    • 谢谢比尔,安全模式有问题,但运行 SET SQL_SAFE_UPDATES=0; 并且所有条目都已更新。
    【解决方案2】:

    请将您的表名放在“Yourtable”的位置并运行以下命令。

    UPDATE YourTable SET url=Replace(Reverse(substring(reverse(url),0,charindex('/',reverse(url)))),'**','')
    

    我刚刚在 select 语句中检查了它,它肯定对你有用。请检查快照供你参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2022-01-10
      • 2023-02-01
      相关资源
      最近更新 更多