DECLARE @s nvarchar(4000)
SET @s = N'中国 汽车' -- 要搜索的关键词
-- 搜索
SELECT 文章id
FROM talbe_1 A, dbo.f_f_splitSTR(@s, N' ') B
WHERE A.关键词 = B.col
GROUP BY 文章id
HAVING COUNT(*) = LEN(@s) - LEN(REPLACE(@s, N' ', '')) + 1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_splitSTR]
GO
/*--字符串分函数
分拆指定分隔符的的字符串,返回结果表
--邹建 2004.04(引用请保留此信息)--*/
/*--调用示例
SELECT * FROM f_splitSTR('aa ba b','a ')
--*/
CREATE FUNCTION f_splitSTR(
@s varchar(8000), --要分拆的字符串
@split varchar(10) --数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END
INSERT @re VALUES(@s)
RETURN
END
GO
如果数据的是”中国 汽车“ 这种由空格组成的关键字
declare @v varchar(20)
set @v='中国 汽车 头部'
select top 1 * from tb order by case when charindex(' '+关键词+' ',' '+@v+' ')<>0
then charindex(' '+关键词+' ',' '+@v+' ') else 999 end