【问题标题】:Split and get part of a string by separator in MySQL在 MySQL 中通过分隔符拆分并获取字符串的一部分
【发布时间】:2020-01-15 03:47:39
【问题描述】:

假设您有一个带有一些分隔符字符串的字符串数据列。

子串可以有不同的长度!

例如:

abcde@xyz
abc@vwxyz

如何将此列输出为两列,或者如果更容易只输出字符串的一部分(左侧或右侧)?

【问题讨论】:

    标签: mysql sql database substring


    【解决方案1】:

    你可以使用Substring_Index()函数;它返回给定count 左侧出现给定delimiter 的子字符串。如果count 值为负数,则返回所有到分隔符右侧。

    演示架构 (MySQL v5.7)

    create table your_table_name(field_name varchar(255));
    insert into your_table_name values('abcde@xyz');
    insert into your_table_name values('abc@vwxyz');
    

    查询 #1

    SELECT 
      field_name, 
      Substring_Index(field_name, '@', 1) AS left_part, 
      Substring_Index(field_name, '@', -1) AS right_part
    FROM your_table_name;
    
    | field_name | left_part | right_part |
    | ---------- | --------- | ---------- |
    | abcde@xyz  | abcde     | xyz        |
    | abc@vwxyz  | abc       | vwxyz      |
    

    View on DB Fiddle

    【讨论】:

      【解决方案2】:

      您可以使用SUBSTRING_INDEX(str,delim,count) 完成此操作

      mysql> SELECT SUBSTRING_INDEX('abcde@xyz', '@', 1);
              -> 'abcde'
      mysql> SELECT SUBSTRING_INDEX('abcde@xyz', '@', -1);
              -> 'xyz'
      

      来源:MySQL :: MySQL 5.7 Reference Manual :: 12.5 String Functions and Operators

      【讨论】:

        猜你喜欢
        • 2018-05-05
        • 2011-03-29
        • 2014-03-02
        • 1970-01-01
        • 2012-06-10
        • 2019-04-04
        • 1970-01-01
        • 2015-02-26
        • 2013-10-30
        相关资源
        最近更新 更多