SUBSTRING_INDEX()

函数说明

此函数 SUBSTRING_INDEX() 以分隔符为索引,获取不同索引位的字符。

如果 count 为正,则返回最后一个分隔符左侧(从左侧开始计数)的所有内容。

如果 count 为负数,则返回最后一个分隔符右侧(从右侧开始计数)的所有内容。

如果参数为 NULLSUBSTRING_INDEX() 将返回 NULL

语法说明

  1. > SUBSTRING_INDEX(str,delim,count)

即,substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置 N)

参数释义

参数说明
str字符串
delim分隔符
count表示 delim 出现次数的整数。

示例

  1. mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
  2. +--------------------------------------+
  3. | substring_index(www.mysql.com, ., 2) |
  4. +--------------------------------------+
  5. | www.mysql |
  6. +--------------------------------------+
  7. 1 row in set (0.03 sec)
  8. mysql> select substring_index('xyz', 'abc', 9223372036854775808);
  9. +------------------------------------------------+
  10. | substring_index(xyz, abc, 9223372036854775808) |
  11. +------------------------------------------------+
  12. | xyz |
  13. +------------------------------------------------+
  14. 1 row in set (0.02 sec)
  15. mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
  16. +---------------------------------------+
  17. | substring_index(www.mysql.com, ., -2) |
  18. +---------------------------------------+
  19. | mysql.com |
  20. +---------------------------------------+
  21. 1 row in set (0.02 sec)
  22. mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('192,168,8,203', ',', 2), ',',-1);
  23. +--------------------------------------------------------------+
  24. | substring_index(substring_index(192,168,8,203, ,, 2), ,, -1) |
  25. +--------------------------------------------------------------+
  26. | 168 |
  27. +--------------------------------------------------------------+
  28. 1 row in set (0.02 sec)
  29. create table test(a varchar(100), b varchar(20), c int);
  30. insert into test values('www.mysql.com', '.', 0);
  31. insert into test values('www.mysql.com', '.', 1);
  32. insert into test values('www.mysql.com', '.', 2);
  33. insert into test values('www.mysql.com', '.', 3);
  34. insert into test values('www.mysql.com', '.', 9223372036854775808);
  35. insert into test values('www.mysql.com', '.', -1);
  36. insert into test values('www.mysql.com', '.', -2);
  37. insert into test values('www.mysql.com', '.', -3);
  38. mysql> select SUBSTRING_INDEX(a, b, c) from test;
  39. +--------------------------+
  40. | substring_index(a, b, c) |
  41. +--------------------------+
  42. | |
  43. | www |
  44. | www.mysql |
  45. | www.mysql.com |
  46. | com |
  47. | mysql.com |
  48. | www.mysql.com |
  49. +--------------------------+
  50. 7 rows in set (0.02 sec)