当前位置: 代码迷 >> Sql Server >> SQL2008 字符串怎么替换
  详细解决方案

SQL2008 字符串怎么替换

热度:508   发布时间:2016-04-24 08:56:43.0
SQL2008 字符串如何替换?
现在有一个需求是这样的:
有短信模板:  尊敬的【#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


结果如图:

------解决思路----------------------
那么你们的数据源可以提供视图啊,视图里把所有需要输出的值都预先转化为字符串不就可以了。