提取单词和字符之间的子字符串

时间:2017-11-11 20:48:03

标签: sql sql-server-2012

尝试提取单词'by'和字符'。'之间的子字符串,但不想包含'by'或'。'在结果中。我已经尝试过在这个网站上找到的几个版本的子串和patindex,但是不能完全得到理想的结果。提前感谢您的任何建议。

样本数据:史密斯,吉姆,下午12:31。 期望的结果:史密斯,吉姆

2 个答案:

答案 0 :(得分:0)

这是可能的解决方案,它将适应大多数情况。看看:

select
substring(s,CHARINDEX(s1,s)+len(s1)+1,charindex(s2,s)-len(s2)-(CHARINDEX(s1,s)+len(s1)))
from (
    select
    '12:31 PM by Smith, Jim.' as s,
    'by' as s1,
    '.' as s2
) as a

答案 1 :(得分:0)

我想为此使用charindex,所以我用ascii值6替换了'by'这个词,这不应该是你可以用键盘输入的东西。

DECLARE @newstring varchar(100) = (SELECT REPLACE('12:31 PM by Smith, Jim.', 'by', char(6)))

SELECT SUBSTRING( @newstring
                , CHARINDEX(CHAR(6), @newstring) + 1
                , CHARINDEX('.', @newstring) - CHARINDEX(CHAR(6), @newstring) - 1
                )

提供输出:

Smith, Jim