叶子,再帮我改一下这个函数吧.....

dusttosky 2012-02-04 02:35:49
叶子..再帮我看看嘛,谢谢...
我增加了一个班级,我想继续使用前面你给的函数,可是不会改成2个列的.

create table tbb(bj char(50),names varchar(8000))

insert into tbb(bj,names) values ('一班',',黄艳影,黎良式,朱金妹,朱杨妹,骆昌润,李龙多,范盛惠,陆敏婷,黎惠芬,陈玉群,陈惠凤,黄兆辉,谢大柱,梁跌徐,陆敏仪,钟洁梅,冯勉新,陈锦新,冯文娟,唐其杰,周国琼,伦金兴,冯雪霞,梁贵彬,莫妃妃,黄培云,钟少芳,谭燕英,成惠玲,梁丽华,李素萍,吕肖梅,许永秀,司秀梅,李桂兰,赵凤明,杨燕珍,陈家权,林永升,区贤林,骆小燕,佘小阳,欧阳燕虹,何振林,梁保红,潘考仪,植美红,卢玉燕,朱海珠,刘棠英,邓雁仪,吴勤兴,刘天德,余碧容,叶丽贤,程素琼,覃飞林,林淑芬,叶志远,陆红针,李伟明,林小群,冯春三,甄有平,黄杏连,李爱志,李哪绍,杨祖坤,李绮莲,黄新秀,李进英,黄惠琴,徐铭龙,陆树新,梁成,欧阳姣辉,曾桂芳,许珍,覃丽梅,张灿平,邓日明,程昭强,钟日珍,廖聪汉,黄萍,马火珍,傅湘辉,陈枚花,麦芳英,韦春燕,程明飞,梁为芬,熊东林,程康,陈标,谢光泽,廖晨,邵志钦,周粤聪,廖就英,邝开凤,严栩文,钟日群,钟日安,刘锐通,黄剑方,林喜松,林福新,冼美香,张美珍,陈合连,黄建彬,吕春梅,罗有霞,梁妹,覃琼清,梁正锋,陈七女,邓思婷,游梓星,黄云彬,钟卓成,古彩球,黄玉玲,邹春梅,杨永华,徐小军,黄富强,赵志能,黄耀彬,邓秋梅,唐趣联,赵秋妹,李海红,郭灼然,唐其林,陈燕好,张金兴,梁汝霞,胡少琼,覃忠茂,胡淑霞,区群珍,潘天德,贾必玉,梁少玲,孙桂文,韦振国,梁嘉毅,罗小平,林柳杏,甘芳,杨拥爱,黄剑彬,冯晖敏,陈伟坚,陈浩斌,丘婷,周其涛,喻茂芬,吴丽华,彭美连,肖安青,杨小军,黎凤莲,陈永康,罗玉莲,梁焕珍,潘燕瑞,陈石连,江家欢,何玫玫,邱丽华,冯彩霞,陈少容,谢志伟,成达珍,白连英,方付华,李标,谢彩丽,杜健聪,陈仪妹,林燕华,陈洁莲,方凤霞,吴星保,周伟超,罗连娇,林文武,冯木霞,潘鹏,简伟斌,孔令斌,李贤森,黄灶霞,梁带好,彭杰,黄建国,邓文庆,唐翠珍,简金威,朱洁宜,何姗,杨春鹏,凌玉兰,李小林,杨丽才,欧阳艳丽,陈丽梅,余燕红,李小眯,林桂云,岑珍凤,王永来,吴伟洋,向仕涛,黎朝桂,黎朝丽,吴华珍,刘梅香,覃永前,雷月华,陈兰芳,肖贞建,冯玉梅,徐芳,梁小意,郑小群,雷月燕,黄小芳,刘红艳,罗妙英,鲁元维,沈肖秀,温志标,余惠坚,韦文琴,任开华,苏栢坚,任开林,钟旺娟,骆志玲,赖思红,卢喜凤,何欠优,王琼,翟兰花,陈路明,欧丽花,吴碧琼,杨李模,梁振朝,杨拥娇,梁成娣,黄文龙,邓杰兴,金桂霞,田秀阳,王武飞,陈勇安,吴仕英,黄保成,李坤玉,刘少珍,江志中,麦捷好,文发娣,劳家愿,范奕传,林敏华,吴春兰,曾什有,李正道,李亚玲,吴春芳,江天福,李木娣,范文婵,莫黎宝,钱金友,马汝民,陆秀健,李小英,蓝光春,江朝兰,古献君,梁为铿,赖秀梅,梁瑞要,黎伟坚,孙惠贞,曾兰花,杨玉静,梁珍,张燕红,陈丽芳,林富越,黄亚尾,李雪梅,黎杰怡,岑桂容,廖求志,苏桂容,严祝英,陈志英,黄勇辉,张艳容,梁日凤,黄荣超,潘家健,成水妹,范西雁,梁燕彩,陈国茂,黄锋,李海媚,陈炳钊,杨桂林,温静韵,陈大明,杜小群,陈恒高,唐运娟,邹思燕,梁道兰,简木兰,黎锋,黎欢琼,苏有军,林志星,邹小涛,李桂莲,崔月雄,陈小丽,周海霞,劳春慧,程水娣,蔡秀兰,黎虹,吴健豪,李华壹,蒙杏明,陈敏芳,谭桂清,秦春霞,王苏媛,赖桂斌,云顺钿,杨丽珍,王敏,汪美金,覃忠论,欧伟健,曾钊利,江秋梅,谢应伟,李建芳,黄锦华,徐欣瑶,张采婷,李毅玲,韦荘兰,梁秀园,徐利娜,黄丽平,曹义,汪菲菲,周韦,庾东成,丁建平,黄海珍,黄晓珠,李海恩,欧美容,潘啟金,陈小珍,许建平,冯月金,王辉,熊伟松,林炳昌,覃祚波,黄小红,卢美好,钟仲娇,刘广梅,李志成,全丽君,邱美红,夏燕萍,钟丽华,范师云,曾海凤,庞勇,毛少梅,陆北容,黄幼年,韦汉晓,何远婷,吴洁莲,向琴,郭园妹,周诗情,钟民强,')



上面我增加了一个班级,我想继续使用前面你给的函数,可是不会改成2个列的.

create function [dbo].[m_split2](@c varchar(8000),@split varchar(2))
returns @t table(bkhr varchar(200))
as
begin
while(charindex(@split,@c)<>0)
begin
if(substring(@c,1,charindex(@split,@c)-1)!=' ')
begin
insert @t(bkhr) values (substring(@c,1,charindex(@split,@c)-1))
end
set @c = stuff(@c,1,charindex(@split,@c),'')
end
if(@c!=' ')
begin
insert @t(bkhr) values (@c)
end
return
end



declare @t varchar(8000)
select @t=bkhr from akhxm
select * from dbo.[m_split2](@t,',')
...全文
195 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dusttosky 2012-02-04
  • 打赏
  • 举报
回复
太谢谢 叶子....今天解了我的燃眉之急啊..
叶子 2012-02-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dusttosky 的回复:]
select '一班','黄艳影,黎良式,朱金妹,朱杨妹'


这里的数据是',黄艳影,黎良式,朱金妹,朱杨妹,'
我这里有多2个点,可以处理掉吗? 因为我现在执行后每个bj的一前一后的姓名都是空.
[/Quote]


create table tbb(bj char(50),names varchar(8000))
insert into tbb(bj,names)
select '一班',',黄艳影,黎良式,朱金妹,朱杨妹,'
union all
select '二班',',张三,李四,'
select top 8000 id = identity(int, 1, 1) into #
from syscolumns a, syscolumns b

select A.bj,
substring(
substring(A.names,2,len(A.names)-2), B.id, charindex(',', substring(A.names,2,len(A.names)-2) + ',', B.id) - B.id) as names
from tbb A, # B
where substring(',' + substring(A.names,2,len(A.names)-2), B.id, 1) = ','

/*
bj names
------- -----------
一班 黄艳影
一班 黎良式
一班 朱金妹
一班 朱杨妹
二班 张三
二班 李四
*/
drop table #
drop table tbb
dusttosky 2012-02-04
  • 打赏
  • 举报
回复
select '一班','黄艳影,黎良式,朱金妹,朱杨妹'


这里的数据是',黄艳影,黎良式,朱金妹,朱杨妹,'
我这里有多2个点,可以处理掉吗? 因为我现在执行后每个bj的一前一后的姓名都是空.

叶子 2012-02-04
  • 打赏
  • 举报
回复
当有两个列,有多行数据的时候,原来的那个函数不方便。

用#2的就可以了。
叶子 2012-02-04
  • 打赏
  • 举报
回复

create table tbb(bj char(50),names varchar(8000))
insert into tbb(bj,names)
select '一班','黄艳影,黎良式,朱金妹,朱杨妹'
union all
select '二班','张三,李四'

select top 8000 id = identity(int, 1, 1) into #
from syscolumns a, syscolumns b

select A.bj,
substring(A.names, B.id, charindex(',', A.names + ',', B.id) - B.id) as names
from tbb A, # B
where substring(',' + A.names, B.id, 1) = ','
/*
bj names
------- -----------
一班 黄艳影
一班 黎良式
一班 朱金妹
一班 朱杨妹
二班 张三
二班 李四
*/
drop table #
dusttosky 2012-02-04
  • 打赏
  • 举报
回复
我想得到的结果如下:
bj names
一班 黄艳影
一班 黎良式
一班 朱金妹
.
.
.
.
.

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧