展开全部
“张三62616964757a686964616fe4b893e5b19e31333365656632,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,现在要将此字符串按照“,”进行分离得到一组数据,现在可以得出这个函数传入变量有两个,一个是目标字符串,我们定义为@string,数据类型为nvarchar(500),选择nvarchar()是为了兼顾所有Unicode字符集,比如中文;另一个变量为分隔符,我们定义为@separator,数据类型为nvarchar(10),输出变量则定义为@array,一个单列列名为String,数据类型为nvarchar(500)的Table。
以字符串“张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”为例,首先得找到第一个“,”,然后把“张三”截取出来,然后将目标字符串变成“李四,王五,钱六,赵七,Tom,Amy,Joe,Leo”,然后再找第一个“,”,把“李四”截取出来,依次类推,直到找不到“,”,有了这个思路,下面就直接实现,查找字符串在程序语言中一般用indexOf方法,截取一般用Substring方法,SQL SERVER中有SUBSTRING函数用来截取字符串,但是没有indexOf查找函数,取而代之的是CHARINDEX和PATINDEX函数,CHARINDEX用于完全匹配查找,而PATINDEX用于模糊匹配查找,根据我们的需求,选用CHARINDEX函数,整个SPLIT函数代码如下:CREATE FUNCTION [dbo].[SPLIT]
(
-- Add the parameters for the function here
@string nvarchar(500),
@separator nvarchar(10)
)
RETURNS @array TABLE(String nvarchar(500))
AS
BEGIN
-- Declare the return variable here
DECLARE @separatorIndex int,@tempString nvarchar(500),@tagString nvarchar(500)
-- Add the T-SQL statements to compute the return value here
SET @tagString=@string
SET @separatorIndex=CHARINDEX(@separator,@tagString)
WHILE(@separatorIndex<>0)
BEGIN
SET @tempString = SUBSTRING(@tagString,1,@separatorIndex-1)
INSERT INTO @array(String) VALUES(@tempString)
SET @tagString = SUBSTRING(@tagString,@separatorIndex+1,LEN(@tagString)-@separatorIndex)
SET @separatorIndex=CHARINDEX(@separator,@tagString)
END
SET @tempString = @tagString
IF (LEN(@tempString)>0)
INSERT INTO @array(String) VALUES(@tagString)
-- Return the result of the function
RETURN
END
GO
测试SELECT * FROM dbo.SPLIT(N'张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo',',')

这篇博客介绍了如何在MySQL中使用自定义函数SPLIT将包含逗号分隔的字符串拆分成多条记录。通过示例代码展示了创建和使用该函数的过程,以字符串'张三,李四,王五,钱六,赵七,Tom,Amy,Joe,Leo'为例子,展示如何将这个字符串拆分为单独的记录。"
113889509,10539383,凤舞天骄私服游戏服务端架设全攻略,"['数据库管理', '游戏开发', 'MySQL', '服务器配置']
5142

被折叠的 条评论
为什么被折叠?



