SQL一次插入多条记录的问题。

netDust_cv 2005-03-12 10:06:51
如:传入值:123|abc|xxx|ccc
那么根据“|”为分隔符,将字符串分为123、abc、xxx、ccc四个不同的字符串,然后将4个值分别插入到数据库中。同时有可能会没有分隔符,或者更多的分隔符,就像程序中常用的Split函数。不知道SQL怎么解决。。

谢谢。
...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
netDust_cv 2005-03-12
  • 打赏
  • 举报
回复
实在是看不懂啊!:(

可否烦请两位帮忙一下,如何插入呢?

我要插入到T_Mail_attach表中。##t是什么意思?临时表吗?
而且是两个参数。两个参数都是用|隔开的。两个参数的“|”数量是相同的。谢谢了。小弟实在太菜了。所以要烦请两位大哥帮忙。。
askgwf2004 2005-03-12
  • 打赏
  • 举报
回复
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_cTmp]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_cTmp]
Go
create function f_cTmp()
returns @a table(id int primary key)
as
begin
declare @b table(id int identity(1,1),name varchar(100))
insert @b select top 800 name from syscolumns
insert @a select id from @b
return
end
Go
--可实现行分离(注,调用此函数一定要先生成Table f_dd_a
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_dd]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_dd]
Go
create function dbo.f_dd(@Amount varchar(1000),@SplitChar varchar(10))
returns table
as
return(
select SubString(@Amount,M.id,Charindex(@SplitChar,@Amount+@SplitChar,M.id)-M.id) as aName
from (select id from dbo.f_cTmp()) as M--f_dd_a_001
where M.id<len(@Amount)+1 and Charindex(@SplitChar,@SplitChar+@Amount,M.id)-M.id=0
)
Go
select aName from dbo.f_dd('123|abc|xxx|ccc','|')

xluzhong 2005-03-12
  • 打赏
  • 举报
回复
declare @s nvarchar(1000)
set @s='123|abc|xxx|ccc'
set @s='select * into ##t from( select '''+replace(@s,'|',''' as s union all select ''')+''''+')t select * from ##t '
print @s
exec(@s)
xluzhong 2005-03-12
  • 打赏
  • 举报
回复
declare @s nvarchar(1000)
set @s='123|abc|xxx|ccc'
set @s='select '''+replace(@s,'|',''' as s union all select ''')+''''
print @s
exec(@s)

34,591

社区成员

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

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