现在有一个需求是这样的:
有短信模板: 尊敬的【#AUser.AName】,欢迎您参加【#AOwn.APName】展览,请于【#ATime.ADate】到达hola酒店~~~~
现在要做的是,把上面的模板里面带有【#】标志的替换成数据表里面的数据,其中AUser(点号之前的是表名,点号之后的是表字段),并且不同表之间可能存在相同的字段名。
测试数据:通过前台条件查到,需要发短信的人有如下
AUser表的
Aid AName
1 张三
2 李四
3 王五
活动表AOwn
APid APName
1 2015世界展
时间表ATime
Adid ADate
1 2015-08-30 14:00:00
现在提供一张字段的关联表,这个表包含有这个短信模板含有的字段,以及在那张表(这个表是我之前设计的,但是后面用的时候发现不怎么会替换)
reltion表
RID TableName TableCol (RID 就是 短信模板的ID,TableCol 就是表的列)
1 ATime ADate
1 AOwn APName
1 AUser AName
现在需要做的是,按照上面返回一张临时表
#tmp
Aid Msg (其中AID 就是上面 用户表的AId)
1 尊敬的张三,欢迎您参加2015世界展展览,请于2015-08-30 14:00:00到达hola酒店~~~~
2 尊敬的李四,欢迎您参加2015世界展展览,请于2015-08-30 14:00:00到达hola酒店~~~~
3 尊敬的王五,欢迎您参加2015世界展展览,请于2015-08-30 14:00:00到达hola酒店~~~~
------解决思路----------------------
create table AUser
(
Aid int,
AName varchar(20)
)
insert into AUser
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五'
--活动表AOwn
create table AOwn
(
APid int,
APName varchar(20)
)
insert into AOwn
select 1,'2015世界展'
--时间表
create table ATime
(
Adid int,
ADate datetime
)
insert into ATime
select 1,'2015-08-30 14:00:00'
select a.Aid,
'尊敬的'+a.AName+','+'欢迎您参加'+a2.APName+','+'请于'+convert(varchar(20),a3.ADate)+'到达hola酒店' as Msg
from AUser a, AOwn a2,ATime a3
结果如图:
------解决思路----------------------
那么你们的数据源可以提供视图啊,视图里把所有需要输出的值都预先转化为字符串不就可以了。