如何在ntext类型中以split(';')的方式把它逐个转成nvarchar数据?

flyye_cs 2005-11-21 02:02:03
是邮件群发系统(C#)中的一个问题:

本来是可以单独发给每个会员的;但在群发状态下,由于会员数非常多,在极短的时间内不断地插入相同邮件数据到SQL Server数据库 会给数据库的性能带来影响,故考虑只传一个邮件的副本到数据库,同时把邮件地址列表作为参数传入存储过程中 现在的问题是:传入的这个邮件地址列表字符比较多,用nvarchar可能不够用,用ntext传进去后 如何才能把一个一个的邮件地址区分出来?? (相邻的地址以分号隔开的)
...全文
315 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm2883098 2005-12-07
  • 打赏
  • 举报
回复
学习ing
UP
flyye_cs 2005-12-05
  • 打赏
  • 举报
回复
实在不好办的话 只能靠优化数据访问层里的控制语句了,本来是想用极少的数据 插入到数据库,用存储过程来优化由群发带来的性能问题...
samfeng_2003 2005-12-04
  • 打赏
  • 举报
回复
ntext很难处理,非常复杂,所以最好还是在程序里实现!
ksnoopy 2005-12-04
  • 打赏
  • 举报
回复
不懂,帮顶
flyye_cs 2005-11-23
  • 打赏
  • 举报
回复
大家帮帮忙哈,贴子不要沉了...
flyye_cs 2005-11-22
  • 打赏
  • 举报
回复
我的意思其实是想实现这样:

比如在程序中(C#)先调用存储过程 email_AddMailList ...

CREATE procedure email_AddMailList
(
@AddressList ntext; -- 关键是这个,传入邮件地址列表(由于长度大于nvarchar,只能用ntext)
-- @FromMail nvarchar (50) = '',
@ToMail nvarchar (50) = '',
@FromName nvarchar (50) = '',
-- @ToName nvarchar (50) = '',
@Subject nvarchar (50) = '',
@Body ntext = null,
@HtmlBody ntext = null,
@IsHtml bit = 0,
@Attachments ntext = null,
@LanguageEncoding nvarchar (50) = 'GB2312',
@Encoding nvarchar (50) = '8bit',
@Priority int = 3,
@IsActive bit = 0,
@Errors int = 0
)
AS
....

到这一步后,用while逐个遍历@AddressList里面的邮件地址(里面是用;隔开的),即:

while(...)
insert into EmailQueue().... -- 把当前邮件副本逐个插入到EmailQueue表中

不晓得在while里面该怎么写了? nvarchar的数据好处理,ntext类型的不知怎么写!

zlp321002 2005-11-21
  • 打赏
  • 举报
回复
--你先把它转换成varchar(8000),然后这样

declare @s varchar(2000),@result varchar(2000)
set @s='aaa.@mail.com;aaa.@mail.com;aaa.@mail.com;aaa.@mail.com;aaa.@mail.com'
select @result= 'select '''+replace(@s,';',''' union all select ''')+''''
exec(@result)
=================
aaa.@mail.com
aaa.@mail.com
aaa.@mail.com
aaa.@mail.com
aaa.@mail.com
flyye_cs 2005-11-21
  • 打赏
  • 举报
回复
关键是如何把 比如ntext类型的数据 aaa.@mail.com;aaa.@mail.com;aaa.@mail.com;aaa.@mail.com;aaa.@mail.com

逐个转换成nvarchar的 邮件地址



这里该怎么写?
zlp321002 2005-11-21
  • 打赏
  • 举报
回复
--传递之前就处理好啊。
ntext 数据支持函数为:
函数 语句
DATALENGTH READTEXT
PATINDEX SET TEXTSIZE
SUBSTRING UPDATETEXT
TEXTPTR WRITETEXT
TEXTVALID

所以,如果数据库处理,好循环匹配的!

27,579

社区成员

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

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