String sql = "select * from table where Name like '%"+keyword+"%'"
专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!成都创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,网站设计、成都网站设计负责任的成都网站制作公司!
这个是拼接字符串 keyword是变量 可以在类里面定义成其他字符
String sql = "select * from table where Name like '%keyword%'";
这个只能是查找keyword不是变量 只是说查找keyword字符串
String sql = "select * from table where Name like %keyword%";
而这个应该会报错的 因为必须加引号
String sql = "select * from table where Name like '_keyword_'";
这个应该也会有问题吧 因为_是匹配单个字符的
两种方案:
(1)程序处理:首先在表1中选择word,然后根据word使用like语句从表2中选择需要的内容:
给你对应的sql语句:
select
distinct
word
from
表1
select
*
from
表2
where
word
like
''''
||
word1
||
'%'''
word1代表的是第一个sql的选择结果,需要使用循环处理
(2)建立自己的存储过程,这个写需要时间,以后给你
用CONTAINS
将 sql+=" and a.ORDER_NAME =? ";
改为 sql+=" and CONTAINS(a.ORDER_NAME, '%' ||? || '%') ";
LIKE 直接在数据库中查找可以查到所有所需数据,但是会扫描整个表,影响性能。
CONTAINS是基于全文索引进行查询,查询结果受全文索引分词的方法影响,查询结果会不全。
所以需要精确查询用LIKE,内容搜索用CONTAINS提高效率!
LZ自己决定。
通过正则表达式使用正则匹配可以用于实现基于文字标题的模糊匹配。
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
关于正则表达式,下面这个博客有详细的介绍:
实现思路就是循环List对象,之后看每个对象中是否有包含的字符串,符合的就输出:
List list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
for(int i=0;ilist.size();i++ ){
if(list.get(i).contains("li")){
System.out.println(list.get(i));
}
}
备注:list是有顺序的,并且下标从0开始。
你好,很高兴回答你的问题。
问题的原因是拼接模糊查询条件是有问题。仔细看下图红线标识的位置,在百分号两边各加了一个单引号。这个是不需要的。
如果参数是通过setString方法赋值的,则在最终执行的sql时会自动拼接单引号的。这里加上单引号反而是错误的了。
如果有帮助到你,请点击采纳。
我解答的大部分是软件开发新人遇到的问题,如果有兴趣可以关注我。