sql - 查找序列词 SQL

标签 sql sql-server search

我使用的是 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/

相关文章:

algorithm - 搜索间隔列表的时间复杂度

regex - 从 glob 表达式创建正则表达式

sql - MSSQL : Display Rows for a Select with Case and Count even if Count = 0

javascript - 从存储过程执行备份数据库在本地有效但在生产中无效

sql - 编写 SQL 查询来替换值并包含所有日期

c# - 在标签上打印来自 SQL Server 的我的搜索结果

objective-c - 在 NSMutableArray 中查找重复的对象属性

sql - Web应用程序应使用显式SQL事务吗?

MySQL 从重复行中查找 MIN()

mysql - 向 SQL 表中插入测试数据