【问题标题】:Looking for the first underscore then find the 5th space after寻找第一个下划线,然后找到第 5 个空格
【发布时间】:2016-12-21 16:45:13
【问题描述】:

我正在尝试创建一个过滤器,在其中查找第一个(或最后一个)出现的下划线(或者它可以是任何字符),然后从那里开始查找第 5 个字符。

我正在考虑一些类似右或左字符索引的东西,选择一个开始的一侧。真的想很好地解释为什么你的答案是这样写的。

示例:我正在寻找 __poptarts_________。

所以我希望它从最左边的 _ 开始并在其之后搜索第 5 个字符 (p)。

【问题讨论】:

    标签: tsql substring wildcard charindex


    【解决方案1】:

    您可以同时使用SUBSTRINGCHARINDEX 来实现这一目标

    SELECT SUBSTRING (string,(CHARINDEX('_',string,0)+1),5)

    你的情况是:

     SELECT SUBSTRING ('I am looking for __poptarts_________',(CHARINDEX('_','I am looking for __poptarts_________',0)+1),5)
    

    结果是 _popt 因为你在 'p' 之前放了两个 '_'

    【讨论】:

    • 非常感谢。如果我试图做完全相同的事情,但现在我想在 where 子句中过滤掉这些结果怎么办。我会采取什么方法。
    • 没问题,“过滤掉”是什么意思?你的意思是你不想得到包含 '_popt' 的结果?
    • 实际上再次查看您的答案,我可能问错了我的问题,但结果不是返回_popt,我只想返回一个字符,比如说't'(第一个_中的第5个)。然后我只想要不像 [A-Z] 的结果
    • SELECT SUBSTRING ('我在找 _poptarts_________',(CHARINDEX('','我在找 __poptarts_________',0)+5),1)跨度>
    • 您最好知道查询中每个数字的含义,然后您可以将其应用于每种情况,顺便说一句,您的意思是什么,不像 [A-Z],我只看到字符。您能再具体说明一下您的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2017-10-04
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多