使用“包含”查询而不是“完全匹配”查询搜索oracle数据库

时间:2013-03-01 13:30:56

标签: java sql oracle jdbc

我需要搜索包含用户信息表的数据库。我知道通过搜索查询得到结果,如下面的

String query;
StringBuilder sb=new StringBuilder(1024);
sb.append("select * from userinfo where uname=").append(key);
query=sb.toString();

但我需要做的是。

  • 如果密钥为abc
  • 然后我需要在数据库中搜索具有值abc
  • 的所有数据
  • 例如
  • 我的数据库包含数据abcabagjabcabcxyzhjjabcxyz
  • 然后我需要检索值abcgjabcabcxyzhjjabcxyz
  • 因为以上所有值都包含abc的共同点。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:7)

如果您使用的是纯SQL,则应使用“%”包围。然后,您的查询将返回uname包含“abc”的所有行。您的查询需要如下所示:

select * from userinfo where uname like '%key%'

答案 1 :(得分:2)

正确的实施将使用PreparedStatement。

PreparedStatement ps = conn.prepareStatement("select * from userinfo where uname like ?");
ps.setString(1, key);
ResultSet rs = ps.executeQuery();

当然这会错过所有错误检查和管道代码:)