在transact sql中我有:
DECLARE @phrase='KeyWord1 KeyWord2 ,KeyWord3 ' -- and my be more separated by space,comma or ;(but mainly by space=it's a phrase)
I have a table Students
Students
(
StudentId bigint,
FullName nvarchar(50),
Article nvarchar(max)
)
我希望通过引入那些文章中包含@phrase
的文章来过滤学生 Something like:
DECLARE @WOrdTable TABLE
(
Word nvarchar(50)
)
INSERT INTO @WOrdTable
SELECT WOrd of @phrase
SELECT *
FROM Students
WHERE Article LIKE (Word in @phrase)
答案 0 :(得分:2)
我会将您的字符串(逗号分隔)拆分为单词短语的临时表,并对Students表执行连接。从那里你可以更好地利用数据,而不是字符串格式
有很多方法可以将字符串拆分成表格:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648
一旦你有临时表,就可以使用这样的东西。
SELECT S.*
FROM Students S (NOLOCK)
JOIN @tmpArticles A
ON S.Articles LIKE '%' + A.Article '%'
但请注意,在%X%上使用LIKE会产生糟糕的性能,因此如果您有大量字符串数据,请质疑您的方法。
这个问题似乎更倾向于全文搜索方法(FTS)