新增文章
文章标题
分类
C#
云星空
K3 BOS
K3 功能
用友
Oracle
python
SQL
MySql
PHP
HTML
script
windows
Access
影视后期
财务
服务
生活
内容
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --【函数】 删除 if exists (select * from sys.objects where object_id = OBJECT_ID(N'dbo.a_SplitTxtNew') AND type in (N'FN', N'if', N'TF', N'FS', N'FT')) drop function dbo.a_SplitTxtNew go ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --【函数】 dbo.a_SplitTxtNew( 'aa,bb,cc',',','起始文本 ','中间文本','结束文本' ) 拼接文本 create function dbo.a_SplitTxtNew ( @Txt varchar(8000) -- 原文本 set @Txt = 'Fdate 制单日期 ,FCustIDName 购货单位 ,FSaleStylename 销售方式 ,FInvoiceName 发票抬头' ,@Find varchar(200) -- 分隔符 set @Find = ' ,' ,@Txt1 varchar(200) -- 开始文本 ,@Txt2 varchar(200) -- 中间文本 ,@Txt3 varchar(200) -- 结束文本 ) returns varchar(max) as begin ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ if len(replace(@Txt,' ',''))=0 begin -- 没有文本,返回空 ★ return '' end ------------------------------------------------------------------------------------------------------------------- declare @Start int set @Start = 1 declare @end int set @end = 1 declare @Result varchar(max) set @Result = '' declare @TxtNew varchar(max) set @TxtNew = '' while 1 = 1 begin ------------------------------------------------------------------------------------------------------- set @end = CHARINDEX( @Find ,@Txt ,@Start ); -- 找到【分隔符】的位置 ★ ----------------------------------------------------------------------------- if @end = 0 begin set @end = len(@Txt) + 1; -- 找不到【分隔符】 ★ end ----------------------------------------------------------------------------- if @Start >= @end begin set @TxtNew = @TxtNew + @Txt3; -- 文本结束 ★ break; end ----------------------------------------------------------------------------- set @Result = SUBSTRING(@Txt,@Start,@end-@Start) -- 截取文字 ★ ----------------------------------------------------------------------------- if @Start = 1 begin set @TxtNew = @Txt1 + @Result -- 文本开始 ★ end else begin set @TxtNew = @TxtNew + @Txt2 + @Result -- 文本中间 ★ end ----------------------------------------------------------------------------- set @Start = @end + DATAlenGTH(@Find) -- 更新 起始位置 ------------------------------------------------------------------------------------------------------- end return @TxtNew -- 输出结果 -------------------------------------------------- end /* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select dbo.a_SplitTxtNew( 'aa,bb,cc',',','起始文本 ',' 中间文本 ',' 结束文本' ) -- 拼接文本:起始文本 aa 中间文本 bb 中间文本 cc 结束文本 select dbo.a_SplitTxtNew( 'aa',',','开始 ',' 中间 ',' 结束' ) -- 拼接文本:开始 aa 结束 select dbo.a_SplitTxtNew( ' ',',','开始 ',' 中间 ',' 结束' ) -- 拼接文本:空 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */ go
返回
保存