我有一个字符串 -
CO_CS_SV_Integrate_WP_BalancingCostRiskandComplexityinYourDRStrat_Apr君
或者
CO_CS_SV_CommVaultTapSponsorship_WP_GartnerNewsletterSmartIdeaforBigData_Jan-MAR
或者
CO_CS_IA_eMedia_WP_Top5eDiscoveryChallengesSolved_Apr君
我需要获取与广告系列名称中的广告系列相关联的资产名称。 例如,“在您的DR Strat中平衡成本风险和复杂性” 将是与第一个活动相关的资产 -
“CO_CS_SV_Integrate_WP_的 BalancingCostRiskandComplexityinYourDRStrat _Apr君”
这是我的目标。我希望从字符串中获得这一点(“在DR Strat中平衡成本风险和复杂性”。 但我不知道如何从广告系列名称中删除资产。它在位置或其他方面不一致??? 我想我可以从右边开始找到第二个“_” 但我不知道语法。我得到了 -
选择campaign.name ,Right(campaign.name,charindex('_',REVERSE(campaign.name)))作为测试 来自广告系列
给了我 - _Apr君
非常感谢任何帮助或指示
感谢。
答案 0 :(得分:1)
您可以创建一个接受字符串的标量函数,如下所示:
CREATE FUNCTION myFunction
(
@str varchar(300)
)
RETURNS varchar(300)
AS
BEGIN
declare @reverse varchar(200),@idx1 int,@idx2 int
set @reverse = reverse(@str)
set @idx1 = CHARINDEX('_',@reverse)
set @idx2 = CHARINDEX('_',@reverse,@idx1+1)
return reverse(substring(@reverse,@idx1+1,@idx2-@idx1-1))
END
您可以尝试使用以下示例:
select dbo.myFunction('CO_CS_SV_Integrate_WP_BalancingCostRiskandComplexityinYourDRStrat_Apr-Jun');