SQL字符串逗号隔开为表结构ufn_SplitEx


SQL 一个字符串根据指定字符分割,并生成一张数据表

CREATE FUNCTION [dbo].[ufn_SplitEx]
(
    @C VARCHAR(8000), --字符串
    @SPLIT VARCHAR(2), --分隔符
    @DeleEmpty INT--1,删除空值,2,不删除空
)
RETURNS @T TABLE(COL VARCHAR(50))   
AS   
BEGIN   

/***************************************************************
功能:SQL分割字符串并返回表

--测试案例:
SELECT * FROM dbo.ufn_SplitEx('11 ,22,33,44,55 ',',',1)
SELECT * FROM dbo.ufn_SplitEx(',22,',',',1)
SELECT * FROM dbo.ufn_SplitEx('10a0c745bd9f454baed387c02975dbce,382f031293214b15bd7f900ac0652a2b,8d0b1424ea6a4029bc13429fa9eb3398,9dfa32b6c61543c2b027b96c0693c1a2,c60520184e8d47f6b6dd3d9033d76877,c7f091144a2149c2a509343d1bac62d9,',',',1)
***************************************************************/
    IF ISNULL(@C,'')='' RETURN
    
    
    DECLARE @tmp VARCHAR(2000)
    
    WHILE(CHARINDEX(@SPLIT,@C)<>0)   
    BEGIN   
        SET @tmp=''
        SET @tmp=RTRIM(LTRIM(SUBSTRING(@C,1,CHARINDEX(@SPLIT,@C)-1)))
        
        --IF((SELECT COUNT(*) FROM @T WHERE COL=@tmp)=0)
            INSERT @T(COL) VALUES (@tmp)   
        SET @C=STUFF(@C,1,CHARINDEX(@SPLIT,@C),'')
    END 
    --IF((SELECT COUNT(*) FROM [@T] WHERE COL=@tmp)=0)  
        INSERT @T(COL) VALUES (RTRIM(LTRIM(@C)))  
    
    IF(@DeleEmpty=1)
        DELETE @T WHERE ISNULL(COL,'')=''
    
    RETURN   
END
GarsonZhang www.yesdotnet.com

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:SQL Prompt自定义代码片段
下一篇:SQL Server 数据库安全之角色
评论列表

发表评论

评论内容
昵称:
关联文章

SQL字符串逗号结构ufn_SplitEx
c# 将数组或集合 转换成以逗号字符串
结构修改>新增主键或者不能空的列
如何设计高效的会计科目管理功能:基于ERP系统的数据库结构
GZDBHelper中GetTable方法,执行SQL语句,返回DataTable结构
GZDBHelper中GetDataSet方法,执行SQL语句,返回DataSet结构
C# 利用 SharpZipLib 对多个文本字符串进行多文件打包RAR或ZIP并进行下载
C# .NETCore EF执行SQL语句 字符串转FormattableString
sql server系统详细说明 之 sys.table_types
sql server系统详细说明 之 sys.plan_guides
sql server系统详细说明 之 sys.objects
sql server系统详细说明 之 sys.parameters
sql server系统详细说明 之 sys.system_parameters
sql server系统详细说明 之 sys.sql_modules
SQL Update更新数据关联
sql server系统详细说明 之 sys.sql_dependencies
EntityFramework Linq 查询数据获得树形结构
基础字典管理功能开发-结构设计,模型更新和数据库迁移脚本生成
解决 Navicat 一段时间就需要重新连接数据库的问题
sql server系统详细说明 之 sys.tables

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码