📅  最后修改于: 2023-12-03 15:20:16.982000             🧑  作者: Mango
SQL拆分字符串函数是用于将一个长字符串按照指定分隔符进行拆分的函数。在很多实际场景中,需要对数据库中的字符串进行一些灵活的操作,如查询、排序、统计等,因此需要使用拆分函数。
下面介绍几种SQL拆分字符串函数的常见实现方式。
SELECT SUBSTRING_INDEX('hello,world', ',', 1) AS part1,
SUBSTRING_INDEX('hello,world', ',', -1) AS part2;
输出:
| part1 | part2 | |-------|--------| | hello | world |
函数的参数依次为原字符串、分隔符和拆分的序号。当序号为正数时,从字符串的左边开始数;当序号为负数时,从字符串的右边开始数。
SELECT REGEXP_SUBSTR('hello,world', '[^,]+', 1, 1) AS part1,
REGEXP_SUBSTR('hello,world', '[^,]+', 1, 2) AS part2;
输出:
| part1 | part2 | |-------|--------| | hello | world |
函数的参数依次为原字符串、正则表达式、开始位置和拆分的序号。
SELECT value
FROM STRING_SPLIT('hello,world', ',');
输出:
| value | |-------| | hello | | world |
该函数是SQL Server 2016引入的,在MySQL和Oracle中暂无该函数。
以下是一个MySQL中自定义的拆分函数示例:
DELIMITER //
CREATE FUNCTION split_str(str VARCHAR(255), delimiter VARCHAR(10), pos INT)
RETURNS VARCHAR(255)
BEGIN
RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(str, delimiter, pos), delimiter, -1);
END//
DELIMITER ;
调用示例:
SELECT split_str('hello,world', ',', 1) AS part1,
split_str('hello,world', ',', 2) AS part2;
输出:
| part1 | part2 | |-------|--------| | hello | world |
以上所有示例均以MySQL为例,实现方式可能因不同数据库而有所不同。需要注意的是,拆分函数属于字符串操作,可能存在性能问题,应根据实际情况谨慎使用。