全文索引:
正确的索引会大大提高数据查询、解决海量数据模糊查询的好方法
缺:
存储空间,每个索引都要空间存储
全文索引并不一定能达到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 姓名