不开心呀,早知道不跳了,一跳跳坑里来了。
使用方式:
DECLARE @ConsigneeAddressId INT;
SET @ConsigneeAddressId = 1;
SELECT *
FROM ConsigneeAddress A OUTER APPLY StrSplit(A.ConsigneeAddress)
WHERE ConsigneeAddressId = @ConsigneeAddressId;
关于 OUTER APPLY和CROSS APPLY的使用 其涉及到的参数 是 当前关联表中的字段
分割用的自定义函数:
CREATE FUNCTION StrSplit ( @str VARCHAR() )
RETURNS @tableName TABLE ( str2table VARCHAR() )
AS
BEGIN
SET @str = @str + ','
DECLARE @insertStr VARCHAR() --截取后的第一个字符串
DECLARE @newstr VARCHAR() --截取第一个字符串后剩余的字符串
SET @insertStr = LEFT(@str, CHARINDEX(',', @str) - )
SET @newstr = STUFF(@str, , CHARINDEX(',', @str), '')
INSERT @tableName
VALUES ( @insertStr )
WHILE ( LEN(@newstr) > )
BEGIN
SET @insertStr = LEFT(@newstr, CHARINDEX(',', @newstr) - )
INSERT @tableName
VALUES ( @insertStr )
SET @newstr = STUFF(@newstr, , CHARINDEX(',', @newstr), '')
END
RETURN
END
需要分割分的字段的数据格式:
以及文章开头sql的执行后的结果: