MySql if条件替换

时间:2015-07-19 17:48:19

标签: mysql sql phpmyadmin

我需要在我的数据库中更新数千条记录,并且无法弄清楚如何做一些事情......我已经四处寻找,但我找不到像我需要的那样的东西。我没有很多练习MySql& phpmyadmin的

以下是我需要做的事情:

  1. 如果我想更新除以.gif
  2. 结尾的记录之外的所有内容

    示例

    from
    31.example.com/blabla/ciao.jpg
    31.example.com/lablar/hello.png
    31.example.com/albalb/hallo.gif
    
    to
    40.example.com/blabla/ciao.jpg
    40.example.com/lablar/hello.png
    31.example.com/albalb/hallo.gif -- stays the same
    
    1. 如果我想将 http:// 替换为 https:// 仅在某些网址/域

      将所有http://替换为http://如果是域“example”:

      40.example.com/blabla/ciao.jpg
      
      31.example.com/lablar/hello.png
      
      27.example.com/lablar/hello.png
      
      18.example.com/lablar/hello.png
      

      如果域名不是example.com,请不要更改:

      www.teestdomain.com/lablar/hello.png
      
      teestdomain.com/lablar/hello.png
      
    2. 对于我尝试过的第二个,但显然这会将所有http更改为所有链接上的https

      UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://', 'https://')
      

      如果网址包含http://40.example.yourdomains.com& http://50.example.yourdomains.com

      它无法正常工作

1 个答案:

答案 0 :(得分:1)

第一个看起来像是:

update t
    set col = concat('40.example.com/', substr(col, 16))
    where col like '31.example.com/%' and col not like '%.gif';

第二个不清楚。你说你想要替换字符串中甚至不存在的东西,所以它没有意义。

我认为您的问题的答案是:使用where子句过滤要更新的行。