当前位置: 代码迷 >> Java Web开发 >> sql server2000 中的%解决方法
  详细解决方案

sql server2000 中的%解决方法

热度:410   发布时间:2016-04-17 13:53:41.0
sql server2000 中的%
我做的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 的行。
  相关解决方案