~~~~非常难的问题,请“大力大哥“等高手鼎力相助!~~~~

DanielSunny 2003-09-29 06:50:55
表type
type_no type_for type_value
1 getCustSumWhsle 您从%1年%2至%3年%4月的业绩为%5,您目前的状态为%6

表extend_msg
extend_id extend_msg_type table_name key_field_name
7 100 Customer_SummaryWhsle Customer_No

表extend_msg_detail
id extend_id field_name disp_index
1 7 customer_no 8
1 7 customer_status 7
1 7 start_year 1
1 7 start_month 2
1 7 end_year 3
1 7 end_month 4
1 7 summaryWhsle 5
1 7 customer_flag 6


我想得到的把表type中“您从%1年%2至%3年%4月的业绩为%5,您目前的状态为%6“
里的%1,%2,%3,%4,%5,%6用表extend_msg_detail中相应的字段值替换(看disp_index)

我打算用存储过程,但是我不该如何做,痛苦中。









...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DanielSunny 2003-09-30
  • 打赏
  • 举报
回复
看到各位大哥的代码,受益匪浅,让我学到了其中的技巧,真是爽呀,再次感谢大力哥。
DanielSunny 2003-09-30
  • 打赏
  • 举报
回复
非常感谢各位高手,特别感谢大力兄,小弟得到各位的支持,可以从中学到很到技术,谢谢了,各位的程序,我现在正在看。
pengdali 2003-09-29
  • 打赏
  • 举报
回复
create table type(type_no int,type_for varchar(100),type_value varchar(100))
insert type values(1,'getCustSumWhsle','您从%1年%2至%3年%4月的业绩为%5,您目前的状态为%6')

create table extend_msg(extend_id int,extend_msg_type int,table_name varchar(100),key_field_name varchar(100))
insert extend_msg values(7, 100 , 'Customer_SummaryWhsle','Customer_No')

create table extend_msg_detail(id int,extend_id int,field_name varchar(100), disp_index int)
insert extend_msg_detail values(1 ,7 , 'customer_no', 8)
insert extend_msg_detail values(1 , 7 , 'customer_status', 7)
insert extend_msg_detail values(1 , 7 , 'start_year' , 1)
insert extend_msg_detail values(1, 7 , 'start_month' , 2)
insert extend_msg_detail values(1 ,7 , 'end_year' , 3)
insert extend_msg_detail values(1 ,7 , 'end_month' , 4)
insert extend_msg_detail values(1 ,7 , 'summaryWhsle' ,5)
insert extend_msg_detail values(1 ,7, 'customer_flag' ,6)

create table Customer_SummaryWhsle (customer_no int,customer_status int,start_year varchar(100),start_month int,end_year int,end_month int,summaryWhsle int,customer_flag varchar(10))
insert Customer_SummaryWhsle values('00001',1,34,345,465,67,234,'y')



----------------------------------------
declare @a int,@b varchar(10),@c varchar(100),@d varchar(100),@aa varchar(200)
select @a=100,@b='00001'

select @c=table_name,@d=key_field_name from extend_msg where extend_msg_type=@a and extend_id=7
select @aa=type_value from type where type_no=1

---------------------------------------

select @aa=replace(@aa,'%'+cast(disp_index as varchar(10)),'''+cast('+field_name+' as varchar(100))+''') from extend_msg_detail

exec ('select '''+@aa+''' 消息 from '+@c+' where '+@d+'='''+@b+'''')


go
drop table extend_msg_detail,extend_msg,type,Customer_SummaryWhsle
teaism 2003-09-29
  • 打赏
  • 举报
回复
--如果%N N<10可以这样,如果有N>=10的情况要做一定的修改。
declare @type table (type_no int,type_for varchar(20),type_value varchar(100))
insert @type select 1,'getCustSumWhsle', '您从%1年%2至%3年%4月的业绩为%5,您目前的状态为%6'


declare @extend_msg_detail table(id int,extend_id int, field_name varchar(20),disp_index int)
insert @extend_msg_detail select 1,7,'customer_no', 8
union all select 1,7,'customer_status',7
union all select 1,7,'start_year',1
union all select 1,7,'start_month',2
union all select 1,7,'end_year',3
union all select 1,7,'end_month',4
union all select 1,7,'summaryWhsle',5
union all select 1,7,'customer_flag',6



---下面是处理语句:
while exists(select 1
from @type A,@extend_msg_detail B
where charindex('%'+rtrim(disp_index),type_value)>0
and B.extend_id=7)

update A set type_value=replace(type_value,'%'+rtrim(disp_index),B.field_name)
from @type A,@extend_msg_detail B
where charindex('%'+rtrim(disp_index),type_value)>0
and B.extend_id=7

select * from @type
txlicenhe 2003-09-29
  • 打赏
  • 举报
回复
declare @a ....

Select @a = start_year,@b = start_month,@c = @end_year,@d = end_month
@e = summaryWhsle,@f = customer_flag where ...

update [type] set type_value = replace(replace(replace(replace(replace(replace(type_value,'%1',@a),'%2',@b),'%3',@c),'%4',@d),'%5',@e),'%6',@f)

34,575

社区成员

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

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