sql server第一个连字符右边的所有字符

时间:2015-07-23 14:29:01

标签: sql sql-server

在SQL Server 2014中,如何在第一个连字符后面会有许多组合的字段中提取第一个连字符右侧的所有字符。

示例1:

  

爱琴海-1GB-7天-COMP

期望的结果:

  

1GB-7天-COMP

示例2:

  

爱琴海SchooliesSpecial-7GB

期望的结果:

  

SchooliesSpecial-7GB

示例3:

AkCityOaks-1天-3GB

期望的结果:

1天-3GB

3 个答案:

答案 0 :(得分:1)

您可以使用CharIndex和'SubString'的组合来获得所需的结果。

执行此操作时,您将从第一个字符开始获取第一个连字符的位置。

CharIndex ('Aegean-1GB-7days-COMP', '-', 1)

然后切割字符串很容易

Select     
    SubString (
      'Aegean-1GB-7days-COMP', 
      CharIndex ('-', 'Aegean-1GB-7days-COMP', 1) + 1,
      Len('Aegean-1GB-7days-COMP') - CharIndex ('-', 'Aegean-1GB-7days-COMP', 1)
    )

由于您的数据最有可能出现在列中,我会将其更改为

Select     
    SubString (
      YourColumnName, 
      CharIndex ('-', YourColumnName, 1) + 1,
      Len(YourColumnName) - CharIndex ('-', YourColumnName, 1)
    )
From YourTableName

如果您想匹配--而不是-,请查看PatIndex`

Read Here about CharIndex

Read Here about PatIndex

Read Here about SubString

答案 1 :(得分:1)

使用CHARINDEX和SUBSTRING可以工作:

DECLARE @HTXT as nvarchar(max)
SET @HTXT='lkjhgf-wtrfghvbn-jk87fry--jk'
SELECT SUBSTRING(@HTXT, CHARINDEX('-', @HTXT) + 1, LEN(@HTXT))

结果: wtrfghvbn-jk87fry - JK

答案 2 :(得分:0)

您好,您可以像这样使用PATINDEXSUBSTRING

DECLARE @Text NVARCHAR(4000)
DECLARE @StartPos int

SET @StartPos = PATINDEX('%-%',@Text) + 1

RETURN SUBSTRING(@Text,@StartPos,LEN(@Text)-@StartPos)

或者在一个人中:

SUBSTRING([Text],PATINDEX('%A%',[Text]) + 1, LEN([Text]) - PATINDEX('%A%',[Text]) + 1)