sql 截取字符串

IF EXISTS(
SELECT *
FROM dbo.sysobjects
WHERE id = OBJECT_ID('fn_Split')
AND (TYPE = 'FN' OR TYPE = 'TF' OR TYPE = 'IF')
)
DROP FUNCTION fn_Split
GO

CREATE FUNCTION [dbo].[fn_Split]
(
@str VARCHAR(MAX),
@separator VARCHAR(10)
)
RETURNS TABLE
AS
RETURN
(
--Example: SELECT id FROM fn_Split('a,b,d,c',',')
SELECT B.id
FROM (
(
--A 的作用只是生成XML格式的数据, 提供数据源
SELECT [value] = CONVERT(XML, '<zzp>' + REPLACE(@str, @separator, '</zzp><zzp>') + '</zzp>')
) A
OUTER APPLY
(
--B 的作用是将A中的 XML 数据的值枚举出来转换成行
SELECT id = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/zzp') N(v)
) B
)
)
GO

 

SELECT id FROM fn_Split('2|5|7|3|6|8','|') 

 

posted @ 2017-12-23 11:37  CreativeSpirit  阅读(243)  评论(0编辑  收藏  举报