全文索引:
正确的索引会大大提高数据查询、解决海量数据模糊查询的好方法
缺:
存储空间,每个索引都要空间存储
全文索引并不一定能达到like这个谓词的效果,如LIKE '%qq%'。
CONTAINS 谓词可以搜索:
词或短语。
词或短语的前缀。
与另一个词相邻的词。
由另一个词的词形变化而生成的词(例如,drive 一词是 drives、drove、driving 和 driven 词形变化的词干)。
使用同义词库确定的另一个词的同义词(例如,metal 一词可能有 aluminum 和 steel 等同义词)。
contains(字段名称, '" + "\"*{0}*\"" + "') ", 搜索内容);这样写可以将数据尽可能接近使用like
关于行转列的例子
首先创建样例表
IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tb
go
CREATE TABLE tb(姓名 VARCHAR(10),课程 VARCHAR(10),分数 INT)
insert into tb VALUES ('张三','语文',74)
insert into tb VALUES ('张三','数学',83)
insert into tb VALUES ('张三','物理',93)
insert into tb VALUES ('李四','语文',74)
insert into tb VALUES ('李四','数学',84)
insert into tb VALUES ('李四','物理',94)
go
SELECT * FROM tb
go

进行行转列
SELECT 姓名,
max(CASE 课程 WHEN'语文' THEN 分数 ELSE 0 END) 语文,
max(CASE 课程 WHEN'数学' THEN 分数 ELSE 0 END) 数学,
max(CASE 课程 WHEN'物理' THEN 分数 ELSE 0 END) 物理 ,
max(CASE 课程 WHEN'语文' THEN 分数 ELSE 0 END)+ max(CASE 课程 WHEN'数学' THEN 分数 ELSE 0 END)+max(CASE 课程 WHEN'物理' THEN 分数 ELSE 0 END)
AS 总分
FROM tb
GROUP BY 姓名

文章探讨了全文索引在提高数据查询效率中的作用,同时指出其存储空间的需求。提到了CONTAINS谓词的功能,包括搜索词、短语、词形变化和同义词。此外,还展示了如何使用SQL进行行转列的数据转换,以更直观地呈现学生分数数据。
2万+

被折叠的 条评论
为什么被折叠?



