我做的jsp系统有一个 “搜索”功能,但是我在查询的时候输入”%%“的时候,所有的信息都搜索出来了。
我知道这是跟SQL 2000中的%有关的。
那怎么来避免这种现象呢?
------解决方案--------------------
\% 转义试试。。。
------解决方案--------------------
WHERE (fieldName LIKE '%%%% ')这种方式查询是全部;主要是你使用sql的保留字(保留字符)%;
使用WHERE (fieldName LIKE '%[%][%]% ')就可以了;也就说你把 "% "的两边加上[]既可以;这和字段处理方法一样;比如你的表中字段用到ID,group,order,field等数据库保留字,在使用时只需要加上[]既可:[ID],[group],[order]。
下表显示了括在方括号内的通配符的用法。
符号 含义
LIKE '5[%] ' 5%
LIKE '5% ' 5 后跟 0 个或更多字符的字符串
LIKE '[_]n ' _n
LIKE '_n ' an, in, on (and so on)
LIKE '[a-cdf] ' a, b, c, d, or f
LIKE '[-acdf] ' -, a, c, d, or f
LIKE '[ [ ] ' [
LIKE '] ' ]
------解决方案--------------------
需要使用转义 escape
查询的时候 where name like '%!%!%% ' eascape '! '
下边是sqlserver中的帮助,对你或许有帮助
使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%% ' ESCAPE '! ' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。