全文操作运行失败。查询子句只包含被忽略的词。

gingerkang 2008-03-10 03:02:29
mssql2000标准版sp4
Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config下的noise.chs文件已经修改成只剩下一个字符@,重新完全填充了.
现在我需要查找内容中含有"%%%%%%",5个百分号的记录,$,'_-# 等都是一样,报错"全文操作运行失败。查询子句只包含被忽略的词。"
我看到有的论坛全文检索这些词可以正常的出来想要的结果,不知道是怎么实现的?
...全文
313 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjlj87 2008-04-01
  • 打赏
  • 举报
回复
你还是回家生孩子 去吧。 不会捣腾个什么劲呀。
-狙击手- 2008-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kelph 的回复:]
很遗憾,sqlserver不支持全文索引检索这些特殊字符
只能用like,charindex,PATINDEX这些方法
[/Quote]

的确
gingerkang 2008-03-11
  • 打赏
  • 举报
回复
我看到有论坛的帖子有几百万,里面的全文检索可以查找%%%%%出这样的结果,速度是非常快的,不可能没有用全文索引,
不知道是怎么处理的

会不会是先过滤干扰词用全文索引检索后再like筛选?不过速度也不会那么快呀,不知道谁有这方面的实施经验?可以介绍一下吗?
kelph 2008-03-10
  • 打赏
  • 举报
回复
很遗憾,sqlserver不支持全文索引检索这些特殊字符
只能用like,charindex,PATINDEX这些方法
gingerkang 2008-03-10
  • 打赏
  • 举报
回复
用like,charindex,PATINDEX能用到全文索引吗?是用全文索引中要检索这些特殊字符的问题
dawugui 2008-03-10
  • 打赏
  • 举报
回复
将百分号%当作普通字符的查询
使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定 WHERE comment LIKE '%30!%%' ESCAPE '!' 之类的 WHERE 子句。如果未指定 ESCAPE 和转义符,则数据库引擎 将返回包含字符串 30 的所有行。

如果 LIKE 模式中的转义符后面没有字符,则该模式无效并且 LIKE 返回 FALSE。如果转义符后面的字符不是通配符,则将放弃转义符并将该转义符后面的字符作为该模式中的常规字符处理。这包括百分号 (%)、下划线 (_) 和左括号 ([) 通配符(如果它们包含在双括号 ([ ]) 中)。另外,在双括号字符 ([]) 内,可以使用转义符并将插入符号 (^)、连字符 () 和右括号 (]) 转义。


create table tb(col varchar(20))
insert into tb values('aaaaa')
insert into tb values('aa%_aaa')
go

select * from tb where col LIKE '%!%_%' ESCAPE '!'

drop table tb

/*
col
--------------------
aa%_aaa

(所影响的行数为 1 行)
*/


--如果需要位置,直接charindex即可.
create table tb(col varchar(20))
insert into tb values('aaaaa')
insert into tb values('aa%_aaa')
go

select 位置 = charindex('%_' , col) from tb

drop table tb

/*
位置
-----------
0
3

(所影响的行数为 2 行)
*/

areswang 2008-03-10
  • 打赏
  • 举报
回复
顶!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧