在sqlserver里怎么样把字段的字符单个输出?

aaabbb456 2003-10-17 11:07:35
比如我有一个字段的值是abcdefg,我现在要在数据库里把这个字符串拆分开,单个输出(输出a,b,c,d,e,f,g)。。。。在数据库里应该怎么写?
...全文
72 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gmlxf 2003-10-17
  • 打赏
  • 举报
回复
用函数吧。
伍子V5 2003-10-17
  • 打赏
  • 举报
回复
为什么一定要用存储过程

用函数不是很好么,纯函数

create function jiadh(@str nvarchar(50))
returns nvarchar(100)
as
begin
declare @str nvarchar(50)
declare @Nstr nvarchar(1000)
set @Nstr=''
while len(@str)>0
begin
set @Nstr=@Nstr+left(@str,1)+','
set @str=right(@str,len(@str)-1)
end
set @Nstr=left(@Nstr,len(@Nstr)-1)
return @Nstr
end

select dbo.jiadh('abcdef')
aaabbb456 2003-10-17
  • 打赏
  • 举报
回复
Dennis618(平凡),怎么样把你这个放在存储过程里,我的表是all_word,要拆分的字段是word,应该怎么样做为一个存储过程来调用。。。。。。
aierong 2003-10-17
  • 打赏
  • 举报
回复
sqlserver里用for循环怎么用。。。。


sqlserver用

while 条件
begin
.....
end
Dennis618 2003-10-17
  • 打赏
  • 举报
回复
declare @tmp table(m varchar(10))
declare @outTmp table(m varchar(20))
declare @str varchar(100)
declare @outStr varchar(150)
declare @i int
set @outStr=''
insert into @tmp values('abcde')
insert into @tmp values('ccedm')
select * from @tmp
declare cur1 cursor for
select m from @tmp
open cur1
fetch next from cur1 into @str
while @@fetch_status=0
begin
set @i=1
set @outstr=''
while @i<=len(@str)
begin
set @outstr=@outstr+substring(@str,@i,1)+','
set @i=@i+1
end
fetch next from cur1 into @str
insert into @outTmp values(left(@outstr,len(@outstr)-1))
end
select * from @outTmp
deallocate cur1
其实这些可以用程序来做,读取数据后在程序把字符分一个一个取出来放入数组.可能效率更好一点.
结果:
m
--------------------
a,b,c,d,e
c,c,e,d,m

aaabbb456 2003-10-17
  • 打赏
  • 举报
回复
CREATE PROCEDURE aaa AS
create function jiadh(@str nvarchar(50))
returns nvarchar(100)
as
begin
declare @str nvarchar(50)
declare @Nstr nvarchar(1000)
set @Nstr=''
while len(@str)>0
begin
set @Nstr=@Nstr+left(@str,1)+','
set @str=right(@str,len(@str)-1)
end
set @Nstr=left(@Nstr,len(@Nstr)-1)
return @Nstr
end

select dbo.jiadh('abcdef')
我把它放在存储过程里面运行的时候,它说function 附近有语法错误。。。
yujohny 2003-10-17
  • 打赏
  • 举报
回复
--可以写成一个自定义函数
create function jiadh(@str nvarchar(50))
returns nvarchar(100)
as
begin
declare @Nstr nvarchar(1000)
set @Nstr=''
while len(@str)>0
begin
set @Nstr=@Nstr+left(@str,1)+','
set @str=right(@str,len(@str)-1)
end
set @Nstr=left(@Nstr,len(@Nstr)-1)
return @Nstr
end

--然后调用
select dbo.jiadh('abcdef')

--结果:
a,b,c,d,e,f
yujohny 2003-10-17
  • 打赏
  • 举报
回复
declare @str nvarchar(50)
set @str='abcdefg'
declare @Nstr nvarchar(1000)
set @Nstr=''
while len(@str)>0
begin
set @Nstr=@Nstr+left(@str,1)+','
set @str=right(@str,len(@str)-1)
end
set @Nstr=left(@Nstr,len(@Nstr)-1)
select @Nstr
tonyzhengjq 2003-10-17
  • 打赏
  • 举报
回复
select substring(字段,1,1) from tablename
应该可以
aaabbb456 2003-10-17
  • 打赏
  • 举报
回复
怎么样用循环把这个字符串拆分后保存在一个数组里输出,程序只要读这个数组可以了。。。
aaabbb456 2003-10-17
  • 打赏
  • 举报
回复
sqlserver里用for循环怎么用。。。。
伍子V5 2003-10-17
  • 打赏
  • 举报
回复
select substring(字段,1,1) from tablename

不是很明白你的意思:)
aaabbb456 2003-10-17
  • 打赏
  • 举报
回复
可是我用的不是asp,语法不一样。。。。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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