SQL Select语句直到一个字符

时间:2017-05-10 08:50:20

标签: sql-server tsql

我希望将所有文本提取到'\'(反斜杠)。

子字符串是删除所有进行中的字符(总共17个)所必需的,因此我希望在17日之后返回所有字符,直到遇到反斜杠。

我尝试过使用charindex,但它似乎并没有停留在\之后它会返回字符。我的代码如下

SELECT path, substring(path,17, CHARINDEX('\',Path)+ LEN(Path)) As Data
  FROM [Table].[dbo].[Projects]
  WHERE Path like '\ENQ%\' AND 
  Deleted = '0'

实施例

以下屏幕截图显示了基本查询和结果,即整个字符串 Image 1

然后我使用substring删除前X个字符,因为总会有相同数量的前进字符

enter image description here

但我真正追求的是(基于上述结果)"测试1" "测试2"和"测试ABC"部分

1 个答案:

答案 0 :(得分:1)

  

子字符串是删除所有进行中的字符(总共17个)所必需的,因此我想在17日之后返回所有字符,直到遇到反斜杠。

select 
substring(path,17,CHARINDEX('\',Path)-17)
from
table

要解决Invalid length parameter passed to the LEFT or SUBSTRING function错误,您可以使用CASE

 select 
    substring(path,17,
   CASE when  CHARINDEX('\',Path,17)>0
        Then  CHARINDEX('\',Path)-17)
        else VA end
           )
    from
    table