字符串转表方法

来源:互联网 发布:华为 海思 媒体算法 编辑:程序博客网 时间:2024/06/07 06:50

遇到存储过程参数是长字符串的时候,like作筛选条件的效率非常差。

可以通过function把它转化为table,然后用IN做where条件。


 /**Example: SELECT F1 FROM dbo.f_splitstr ('a,b,c,d',',') **/ CREATE FUNCTION [dbo].[f_splitstr]  (   @SourceSql   VARCHAR(8000)     ,@StrSeprate  VARCHAR(100)  )  RETURNS @temp TABLE(F1 VARCHAR(50))  AS         BEGIN   DECLARE @ch AS VARCHAR(100)      SET @SourceSql = @SourceSql + @StrSeprate        WHILE (@SourceSql <> '')   BEGIN       SET @ch = LEFT(@SourceSql ,CHARINDEX(',' ,@SourceSql ,1) -1)          INSERT @temp VALUES(@ch)                 SET @SourceSql = STUFF(@SourceSql ,1 ,CHARINDEX(',' ,@SourceSql ,1) ,'')   END    RETURN  END 


0 0
原创粉丝点击