从 23.4 版本开始, LightDB 支持 mysql 的substring_index 函数。下面对这个函数进行介绍
substring_index(str, delim, count )
这个函数用于从指定字符串str中返回到达分隔符delim出现次数(count)之前的子字符串。。具体见之后用例:
mysql 中介绍:
Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. SUBSTRING_INDEX() performs a case-sensitive match when searching for delim.
LightDB 中函数定义
substring_index(str varchar, delim varchar, count integer) RETURNS varchar
注意点
- 如果count为正,则返回最后一个分隔符左侧的所有元素(从左侧开始计数)。
- 如果count为负数,则返回最后一个分隔符右侧的所有内容(从右侧开始计数)。
- SUBSTRING_INDEX()在搜索delim时区分大小写。
- 这个函数是多字节安全的。
- 如果SUBSTRING_INDEX()的任何参数为NULL,则返回NULL。
示例
效果与mysql相同,不再列举mysql用例
-- 从左边开始返回第二个分隔符'.' 之前的子串
lightdb@test_m=# SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
substring_index
-----------------
www.mysql
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('www.mysql.com', '.', -1);
substring_index
-----------------
com
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('mysql.Mysql.mysql', 'm', 2);
substring_index
-----------------
mysql.Mysql.
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('mysql.Mysql.mysql', 'M', 1);
substring_index
-----------------
mysql.
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('www.mysql.com', '', 1) is null;
?column?
----------
f
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('测试.测试mysql.com测试', '.', 1);
substring_index
-----------------
测试
(1 row)
lightdb@test_m=# SELECT SUBSTRING_INDEX('测试.测试mysql.com测试', '测', 2);
substring_index
-----------------
测试.
(1 row)