1

Q1-PatIndex 模式正则表达式:如何匹配点后跟空格?Q2 -PatIndex 模式正则表达式:如何匹配一个点后跟两个空格?。

我想把它放在这里只得到目标内容

 Declare @Temp Table(Data VarChar(1000))

Insert Into @Temp Values('Lalallaa GOAL: This is the truthmeow. Meow.  ')
Insert Into @Temp Values('Lalallaa GOAL: This is the truth. Meowrwr. ')
Insert Into @Temp Values('lALALLA GOAL: This is the truth. Meowrwr.  NOTINCLUDED: WAWAW')


Select Left(
             SubString(Data,PATINDEX ('%GOAL%',Data), 8000) ,
             PatIndex('regex here', SubString(Data, PatIndex('%[GOAL]%', Data), 8000))-1)
From   @Temp

预期产出

GOAL: This is the truthmeow. 
GOAL: This is the truth.
GOAL: This is the truth. 

我在真实数据库上使用了 Shnugos 答案,但遇到了一个错误:Illegal name character

我检查了数据类型,它是ntext

4

2 回答 2

1

您也可以尝试使用 LIKE 语句。

columnname LIKE '.  %'

编辑:

尝试这个:

Select SUBSTRING(data, LEN(LEFT(data, CHARINDEX ('GOAL:', data))) , LEN(data) - LEN(LEFT(data, CHARINDEX ('GOAL:', data))) - LEN(RIGHT(data, LEN(data) - CHARINDEX ('.', data))) - 1)
From   @Temp 
于 2016-02-12T09:19:53.507 回答
1

那这个呢:

简短说明:替换.为 xml-tags 会将这个字符串“拆分”成与您的字符串一样多的“部分”。XML-value 方法将采用第一项的值,即字符串到第一项.

Declare @Temp Table(Data VarChar(1000))

Insert Into @Temp Values('Lalallaa GOAL: This is the truthmeow. Meow.  ')
Insert Into @Temp Values('Lalallaa GOAL: This is the truth. Meowrwr. ')
Insert Into @Temp Values('lALALLA GOAL: This is the truth. Meowrwr. NOTINCLUDED: WAWAW')


Select CAST('<x>' + REPLACE(SubString(Data,PATINDEX ('%GOAL%',Data), 8000),'. ','</x><x>') + '</x>' AS XML).value('x[1]','varchar(max)')
From   @Temp    
于 2016-02-12T09:35:20.580 回答