博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用脚本--将指定的字符串拆分多行数据
阅读量:4916 次
发布时间:2019-06-11

本文共 2585 字,大约阅读时间需要 8 分钟。

--==============================================--将指定的字符串拆分多行数据--==============================================ALTER FUNCTION dbo.ufn_SplitString(  @SourceSql VARCHAR(MAX) ,  @StrSeprate VARCHAR(10))RETURNS @temp TABLE (C1 VARCHAR(MAX) )ASBEGIN    DECLARE @i INT    SET @SourceSql = RTRIM(LTRIM(@SourceSql))    SET @i = CHARINDEX(@StrSeprate, @SourceSql)    WHILE @i >= 1        BEGIN            INSERT  @temp            VALUES  ( LEFT(@SourceSql, @i - 1) )            SET @SourceSql = SUBSTRING(@SourceSql, @i + 1,                                       LEN(@SourceSql) - @i)            SET @i = CHARINDEX(@StrSeprate, @SourceSql)        END    IF @SourceSql <> '\'        INSERT  @temp        VALUES  ( @SourceSql )    RETURNENDGO--=====================================================--用法:SELECT * FROM dbo.ufn_SplitString('ABDC,BDF,DEF,,',',')--排除空字符串SELECT * FROM dbo.ufn_SplitString('ABDC,BDF,DEF,,',',')WHERE C1<>''

 版本2

--===============================================================--拆分脚本CREATE FUNCTION [dbo].[SplitString](      @Input NVARCHAR(MAX), --input string to be separated      @Separator NVARCHAR(MAX)=',', --a string that delimit the substrings in the input string      @RemoveEmptyEntries BIT=1 --the return value does not include array elements that contain an empty string)RETURNS @TABLE TABLE (      [Id] INT IDENTITY(1,1),      [VALUE] NVARCHAR(MAX)) ASBEGIN       DECLARE @Index INT, @Entry NVARCHAR(MAX)      SET @Index = CHARINDEX(@Separator,@Input)      WHILE (@Index>0)      BEGIN            SET @Entry=LTRIM(RTRIM(SUBSTRING(@Input, 1, @Index-1)))                      IF (@RemoveEmptyEntries=0) OR (@RemoveEmptyEntries=1 AND @Entry<>'')                    BEGIN                          INSERT INTO @TABLE([VALUE]) VALUES(@Entry)                    END                SET @Input = SUBSTRING(@Input, @Index+DATALENGTH(@Separator)/2, LEN(@Input))                SET @Index = CHARINDEX(@Separator, @Input)      END          SET @Entry=LTRIM(RTRIM(@Input))      IF (@RemoveEmptyEntries=0) OR (@RemoveEmptyEntries=1 AND @Entry<>'')            BEGIN                  INSERT INTO @TABLE([VALUE]) VALUES(@Entry)            END    RETURNEND --===============================================================--测试脚本DECLARE @str1 VARCHAR(MAX), @str2 VARCHAR(MAX), @str3 VARCHAR(MAX)SET @str1 = '1,2,3'SET @str2 = '1###2###3'SET @str3 = '1###2###3###'SELECT [VALUE] FROM [dbo].[SplitString](@str1, ',', 1)SELECT [VALUE] FROM [dbo].[SplitString](@str2, '###', 1)SELECT [VALUE] FROM [dbo].[SplitString](@str3, '###', 0)

 

转载于:https://www.cnblogs.com/TeyGao/p/3542654.html

你可能感兴趣的文章
java中的单例模式
查看>>
Elasticsearch Server,2nd Edition pdf 翻译 中文
查看>>
Django-缓存
查看>>
[无关IT]就这样在凌晨写一篇吧~
查看>>
java.util.Map.Entry接口
查看>>
Linux中crond服务与crontab用法
查看>>
PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释...
查看>>
分享8年开发经验,浅谈个人发展经历,明确自己发展方向
查看>>
开发使用Node.js的一个小技巧
查看>>
Mike的农场 BZOJ4177
查看>>
IT职场人生系列
查看>>
如何指定个别属性进行transition过渡
查看>>
Python爬虫基础--分布式爬取贝壳网房屋信息(Client)
查看>>
jmeter(十二)关联之正则表达式提取器
查看>>
win7系统复制文件到u盘提示文件过大怎么办
查看>>
The path "" is not valid path to the gcc binary.
查看>>
KMP算法
查看>>
NBUT [1369] A Breaking Computer
查看>>
SonarQube4.4+Jenkins进行代码检查实例之三-单元測试分析
查看>>
【转载】appium自动化环境搭建
查看>>