不开心呀,早知道不跳了,一跳跳坑里来了。
使用方式:
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(100) ) RETURNS @tableName TABLE ( str2table VARCHAR(50) ) AS BEGIN SET @str = @str + ',' DECLARE @insertStr VARCHAR(50) --截取后的第一个字符串 DECLARE @newstr VARCHAR(1000) --截取第一个字符串后剩余的字符串 SET @insertStr = LEFT(@str, CHARINDEX(',', @str) - 1) SET @newstr = STUFF(@str, 1, CHARINDEX(',', @str), '') INSERT @tableName VALUES ( @insertStr ) WHILE ( LEN(@newstr) > 0 ) BEGIN SET @insertStr = LEFT(@newstr, CHARINDEX(',', @newstr) - 1) INSERT @tableName VALUES ( @insertStr ) SET @newstr = STUFF(@newstr, 1, CHARINDEX(',', @newstr), '') END RETURN END
需要分割分的字段的数据格式:
以及文章开头sql的执行后的结果: