从数据库字段中检索特定数据

时间:2011-06-21 08:03:16

标签: sql sql-server

我有一个表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

3 个答案:

答案 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