日期:2014-05-16  浏览次数:20861 次

求一SQL语句,多个字符串被包含的问题。
有一产品表,有一列是索引关键字,如果有多个词用|分隔:
如别克|奔驰|宝马

目前要写一个查询,给定某个查询词,对索引关键字进行匹配。比如给定的词是:新宝马汽车,想要查询索引关键字被查询词包含。。。如果索引词是单个,用charindex()就可以了,多个怎么写?谢谢。

------解决方案--------------------
USE test
go


-->生成表A

if object_id('A') is not null 
drop table A
Go
Create table A([ID] smallint,[ProdName] nvarchar(8))
Insert into A
Select N'1',N'宝马'
Union all Select N'2',N'宝马、奔驰、吉利'
Union all Select N'3',N'奥迪、奔腾'
Union all Select N'4',N'雪铁龙'

-->生成表B

if object_id('B') is not null 
drop table B
Go
Create table B([ID] smallint,[ProdName2] nvarchar(2))
Insert into B
Select N'1',N'宝马'
Union all Select N'2',N'奔驰'
Union all Select N'3',N'宝马'
Union all Select N'4',N'吉利'


SELECT * FROM A
WHERE NOT EXISTS(SELECT 1 FROM B AS x WHERE CHARINDEX(x.ProdName2,a.ProdName)>0)

/*
ID     ProdName
------ --------
3      奥迪、奔腾
4      雪铁龙
*/