【问题标题】:How to remove part of string in mysql?如何在mysql中删除部分字符串?
【发布时间】:2011-09-20 07:09:11
【问题描述】:

在我的数据库的一个表中,我的字符串看起来像这样:

sometext-othertext

如何使用 SELECT 语句删除包含破折号的文本,以便结果为 sometext?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    返回第一次出现分隔符“-”之前的子字符串:

    SELECT SUBSTRING_INDEX('foo-bar-bar', '-', 1) as result;

    输出结果 = "foo"

    你可以在获取子字符串之前将 1 替换为你想要的出现次数

    SELECT SUBSTRING_INDEX('foo-bar-bar', '-', 2) as result;

    输出结果 = "foo-bar"

    参考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index

    【讨论】:

    【解决方案2】:

    有两种方法可以解决这个问题,如果你想显示所有(只删除“-”符号,我建议使用这个,因为速度更快:

    SELECT REPLACE('sometext-othertext','-','');
    

    该语法将文本“-”更改为“”(空文本,因为您只想删除它)

    如果您只想显示第一部分(例如:sometext)或仅显示第二部分(例如:othertext),您可以使用它来分割字符串:

    SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1);
    

    【讨论】:

      【解决方案3】:

      只需使用:

      SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1);
      

      函数有3个参数,第一个是文本,第二个是分割对象,数字(1)是你想要的(控制器)

      【讨论】:

        【解决方案4】:

        SELECT REPLACE("sometext-othertext","-", "") as newvalue

        应该这样做。
        编辑:

          SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1) as newvalue;
        

        很抱歉没有早点理解这个问题。

        【讨论】:

        • 不,这将产生 sometextothertext 而 OP 想要 sometext。
        • 对不起-我猜是匆忙回答! SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1) as newvalue;
        【解决方案5】:

        最好使用mysql REPLACE函数将“-”替换为“”

        【讨论】:

        • 这不是全部目标。应删除第一个破折号之后的所有内容。
        • 对不起,我误解了这个问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-14
        • 2017-07-02
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多