baiduyixia
V2EX  ›  问与答

请教 mysql 截取的问题

  •  
  •   baiduyixia · May 4, 2020 · 1139 views
    This topic created in 2223 days ago, the information mentioned may be changed or developed.

    update xx set content=substring_index(content,"指定字符",-1)
    截取到的是在 content 里从右数到左边遇到第一个“指定字符”,然后保留该字符后面的内容,
    请教,如何截取,从左到右时第一个“指定字符”,然后保留该字符后面的内容? 谢谢

    6 replies    2020-05-06 11:56:49 +08:00
    baiduyixia
        1
    baiduyixia  
    OP
       May 4, 2020
    比如字段里面的内容是:1,2,3,4,5 和 1,2,3 我想得到 2,3,4,5 和 2,3
    zhuangjia
        2
    zhuangjia  
       May 4, 2020
    baiduyixia
        3
    baiduyixia  
    OP
       May 4, 2020
    @zhuangjia 不行哦,是从左到右时第一个“指定字符”,然后保留该字符后面的内容,是该字符后面的内容而不是前面
    zhuangjia
        4
    zhuangjia  
       May 5, 2020
    @baiduyixia 对哦,是我搞错了,那就组合起来处理好了
    substring_index('1,2,3,4,5', CONCAT(substring_index('1,2,3,4,5',',',1), ','), -1)
    或者
    substring('1,2,3,4,5', (LOCATE(',', '1,2,3,4,5') + CHAR_LENGTH(',')))
    baiduyixia
        5
    baiduyixia  
    OP
       May 5, 2020
    @zhuangjia 还是不行唉,您的意思是:update 表 xx set content=substring_index('content', CONCAT(substring_index('content','指定字符',1), '指定字符'), -1)
    这样出来 content 内容直接变成 content 这个英文单词了
    zhuangjia
        6
    zhuangjia  
       May 6, 2020
    @baiduyixia
    update xxx set content = substring_index(content, CONCAT(substring_index(content,指定字符,1), 指定字符), -1);
    注意是否有单引号或双引号。用 字段名 时就不需要加引号了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3012 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    ♥ Do have faith in what you're doing.