设置存储过程中字符串的一部分的格式



我有一个在SQL Server函数中生成的字符串,它像这样返回:

Ouseph MM, Li J, Chen HZ, Pécot T, Wenzel P, Thompson JC, Comstock 
G, Chokshi V, Byrne M, Forde B, Chong JL, Huang K, Machiraju R, de 
Bruin A, Leone G (2012) Atypical E2F repressors and activators 
coordinate placental development. <i>Dev Cell</i>. 22(4):849-62 
PMCID:PMC3483796

我需要做的是用 HTML 标记加粗存储在另一个表中的几个名称。名称可以是:

Leone GW
Leone G
Thompson J
Thompson JC

这是名称可能存在的不同方式。我需要创建游标和循环吗?然后我还有一个名字的问题,一个首字母或两个名字。 在此示例中,我需要将Leone G替换为<b>Leone G</b>Thompson JC替换为<b>Thompson JC</b>

任何帮助或建议不胜感激

这是一个快速的方法...本质上是一种标记化的替换。

注: 如果要将此技术应用于整个表,则必须将其迁移到 UDF 中。

编辑:

您可能会注意到子查询中的交叉连接。 在这里,您必须添加任何预期的尾随分隔符

Declare @YourTable Table ([SomeCol] varchar(50))
Insert Into @YourTable Values 
('Leone GW')
,('Leone G')
,('Thompson J')
,('Thompson JC')

Declare @S varchar(max) = 'Ouseph MM, Li J, Chen HZ, Pécot T, Wenzel P, Thompson JC, Comstock G, Chokshi V, Byrne M, Forde B, Chong JL, Huang K, Machiraju R, de Bruin A, Leone G (2012) Atypical E2F repressors and activators coordinate placental development. <i>Dev Cell</i>. 22(4):849-62 PMCID:PMC3483796'
Select @S=Replace(@S,MapFrom,MapTo)
From  (
Select MapFrom = SomeCol+suff
,MapTo   = '<b>'+SomeCol+'</b>'+suff
From  @YourTable B1
Cross Join (values (' ')
,(',')
,('.')
) B2 (suff)
) A
Select @S

返回

Ouseph MM, Li J, Chen HZ, Pécot T, Wenzel P,Thompson JCComstock G, Chokshi V, Byrne M, Forde B, Chong JL, Huang K, Machiraju R, de Bruin A,Leone G(2012) 非典型E2F抑制剂和激活剂协调胎盘发育。开发单元。22(4):849-62 PMCID:PMC3483796

最新更新