Sql server 2005 SQL Server子字符串

Sql server 2005 SQL Server子字符串,sql-server-2005,Sql Server 2005,我需要一个好的表达式,以便正确选择字段的各个部分。 例如,字段的类型可以是:“google_organic”或“google_campaign_Heregosmycode”。我感兴趣的部分是“有机”或“运动”,没有任何其他添加。 到目前为止,我选择: substring(Referer, charIndex('_',Referer)+1, len(Referer)) 但在“运动”的情况下,我选择了整个事情。。。我不知道如何管理第二个下划线的存在或不存在 谢谢一种方法是基本上使用下面的SQL创

我需要一个好的表达式,以便正确选择字段的各个部分。 例如,字段的类型可以是:“google_organic”或“google_campaign_Heregosmycode”。我感兴趣的部分是“有机”或“运动”,没有任何其他添加。 到目前为止,我选择:

 substring(Referer, charIndex('_',Referer)+1, len(Referer))
但在“运动”的情况下,我选择了整个事情。。。我不知道如何管理第二个下划线的存在或不存在


谢谢

一种方法是基本上使用下面的SQL创建lastIndex类型的搜索,并将结果用作长度:
len(Referer)–(charindex,反向(Referer))-1)

然后,您可以按如下方式重写查询,尽管您需要第一个charIndex的结果,因此这相当紧张:
substring(Referer,charIndex(“”,Referer)+1,(len(Referer)–(charIndex(“”,reverse(Referer))-1)-(charIndex(“”,Referer)+1)

我意识到,现在只有当你有2个下划线时,这才有效。但您可以根据CASE/WHEN语句筛选要运行的查询