我有一个表XPTO,其中包含REMARKS列(数据类型ntext)。
在备注栏上我有几行。
我的目标是仅检索具有以特定单词(@ var1)开头并以下一个句点标点符号(@ var2)结尾的特定文本的行。
我尝试此查询但我只检索以特定单词开头但不以以下句点标点符号(@ var2)结尾的字段:
例如,假设我有几行显示文字(嗨劳拉!约翰会稍后去酒吧。他会带他的女朋友吗?)我只想要这部分文字(约翰会去看看酒吧稍后。)。
DECLARE @var1 VARCHAR(1000)
DECLARE @var2 VARCHAR(1000)
SET @var1 = 'startword'
SET @var2 = '.'
SELECT CHARINDEX(@var1,REMARKS), SUBSTRING (REMARKS, CHARINDEX(@var1,REMARKS) ,500), * FROM XPTO WHERE REMARKS LIKE '%' + @var1 + '%' + @var2
答案 0 :(得分:0)
试试这个
declare @string varchar(max)
declare @var1 varchar(1000)
declare @var2 varchar(1000)
set @var1 = 'john'
set @var2 = '.'
set @string='hi laura! john will go to the pub later. will he take is girlfriend?'
select SUBSTRING(string,1,charindex(@var2,string)-1) from
(
select SUBSTRING(@string,CHARINDEX(@var1,@string),len(@string )) as string
) as t
答案 1 :(得分:0)
你也可以在下面试试。
Select CHARINDEX(@var1,REMARKS),
SUBSTRING (REMARKS, CHARINDEX(@var1,REMARKS) ,500), *
From XPTO where REMARKS like @var1 + '%' and REMARKS like '%' + @var2
答案 2 :(得分:0)
DECLARE @var1 VARCHAR(1000)
DECLARE @var2 VARCHAR(10)
SET @var1 = 'string_to_be_found'
SET @var2 = 'end_string'
SELECT SUBSTRING(
REMARKS
,CHARINDEX(@var1,REMARKS)
, CHARINDEX(@var2,REMARKS,CHARINDEX(@var1,REMARKS))+ LEN(@var2) - CHARINDEX(@var1,REMARKS)
)
FROM XPTO
WHERE CHARINDEX(@var1,REMARKS)>0
AND CHARINDEX(@var2,REMARKS,CHARINDEX(@var1,REMARKS))>0