mysql 实现模糊查询

前言

模糊查询是经常用到的SQL语句操作,查找新闻时,不能够让用户输入完全正确的标题或内容,才能查找到结果,这样的软件功能是在折磨用户,导致一个结果就是,用户不再使用我们的软件。

使用

  查找新闻标题或新闻内容时,用到了模糊查询其中的一种方法,select * from news where title like '%' +@title+'%'   ,其中的 % 表示任意0个或多个字符,即可匹配任意类型和长度的字符。

 

BEGIN

	select n.id,n.title,n.createTime,c.[name],n.caId
    from news n
 
	inner join category c on n.caId=c.id 
	where n.title like '%'+@title+'%'
	order by n.createTime desc	

END

效果

当选择按“标题”搜索时,输入标题中的模糊字眼“世纪”,进行查询:

  

 

搜索结果图:

              

拓展

一、模糊查询还有其他的实现方式:

1.select * from news where title like '_' +@title+'_'

如果@title的值是:三,那么搜索结果是“唐三藏”这样的三个字,且中间的字是“三”的。

解释:"_" 表示任意单个字符,匹配单个任意字符,它常用来限制表达式的字符长度语句。 

2.select * from news where title like '老[@title]'

如果@title的值是:1-9,表示一个范围,那么搜索结果为:“老1、老2...老9”

解释:[ ] 表示括号内所列字符中的一个(类似正则表达式),指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。 

3.select * from news where title like '[^@title]三'

如果@title的值为:张李王,表示一个字符串,那么搜索结果为:排除“张三、李三、王三”的值,找出“赵三、孙三”等值。

解释:[^] 表示不再括号所列之内的单个字符。其取值和[ ]相同,但它要求所匹配对象为指定字符以外得的任一个字符。

 

二、SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下: 
1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 
2、LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。 
3、LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。 
4、LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。 
5、LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。 
6、LIKE'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。 
7、LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

小结

每一个细小知识的总结,都会是成长路上不可缺少的一部分。

感谢您的访问!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
以下是一个简单的 Swing Java MySQL 模糊查询代码示例: ```java import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; public class FuzzySearch extends JFrame { private JLabel label; private JTextField textField; private JButton button; private JTextArea textArea; private String url = "jdbc:mysql://localhost:3306/mydatabase"; private String username = "root"; private String password = "password"; private Connection conn; public FuzzySearch() { setTitle("Fuzzy Search"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); label = new JLabel("Enter name:"); textField = new JTextField(20); button = new JButton("Search"); textArea = new JTextArea(10, 30); panel.add(label); panel.add(textField); panel.add(button); add(panel, BorderLayout.NORTH); add(new JScrollPane(textArea), BorderLayout.CENTER); try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String name = textField.getText(); String query = "SELECT * FROM mytable WHERE name LIKE '%" + name + "%'"; try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); textArea.setText(""); while (rs.next()) { String result = rs.getString("name") + " - " + rs.getString("age") + "\n"; textArea.append(result); } } catch (SQLException ex) { ex.printStackTrace(); } } }); } public static void main(String[] args) { FuzzySearch fs = new FuzzySearch(); fs.setVisible(true); } } ``` 在这个示例中,我们创建了一个简单的 Swing 窗口,其中包含一个标签、一个文本框、一个按钮和一个文本区域。我们使用 JDBC 驱动程序连接到 MySQL 数据库,并在按钮单击事件中执行模糊查询。查询语句使用 LIKE 运算符来匹配数据库中包含用户输入的任何字符序列的名称。查询结果将显示在文本区域中。 请注意,这只是一个简单的示例,你可能需要根据你的实际需求进行修改。另外,由于这个示例使用了简单的语句连接到数据库,因此可能存在 SQL 注入攻击的风险。在生产环境中,请使用 PreparedStatement 或其他安全的方法来避免这种情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值