我使用的是 SQL Server 2008,我需要在 Words
表中搜索完整的句子。
单词
ID LineNum WordText
----------- ----------- -----------
1 1 i
2 1 love
3 2 i
4 2 love
5 2 ice
6 3 i
7 3 love
8 3 dogs
9 3 too
如果句子是“我爱狗”,则本例中的结果应仅为 ID 6-8。
ID LineNum WordText
----------- ----------- ------------
6 3 i
7 3 love
8 3 dogs
最佳答案
试试这个:
SELECT T1.linenum,
word = STUFF((
SELECT ' ' + T2.wordtext
FROM TableName T2
WHERE T1.linenum = T2.linenum
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM TableName T1
GROUP BY T1.linenum
ORDER BY T1.linenum
结果:
LINENUM WORD
----------------------------
1 i love
2 i love ice
3 I love dogs too
查看结果 SQL Fiddle .
编辑:
对于结果列表,这是我能想到的最好的结果:
WITH CTE AS
(SELECT T1.linenum
, word = STUFF((
SELECT ' ' + T2.wordtext
FROM TableName T2
WHERE T1.linenum = T2.linenum
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM TableName T1
GROUP BY T1.linenum)
SELECT T3.*
FROM CTE JOIN
TableName T3 ON CTE.linenum=T3.linenum
WHERE CTE.word LIKE '%I love dogs%'
结果:
ID LINENUM WORDTEXT
6 3 I
7 3 love
8 3 dogs
9 3 too
SQL Fiddle 中的示例结果.
关于sql - 查找序列词 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28713595/