gundumw100 2009-10-16 09:42 采纳率: 0%
浏览 150

类似baidu搜索的sql怎么写的?

我要在数据库里查数据
规则是这样的:
我要输入“上海 徐汇”就能查出所有带“上海 徐汇”字样的数据(另外,条件不一定只有2个,比如“上海 徐汇 办事处”写可以查)
我现在是这样写的:
[code="java"]String keyword=keyword.trim().replace(" ", "%");
String sql="select * from 表名 where region like '%"+keyword+"%'";[/code]

这样输入“上海 徐汇 办事处”,就会输出语句如下:
[color=red]sql="select * from 表名 where region like '%上海%徐汇%办事处%';[/color]
现在有问题,假如我输入查询条件“办事处 徐汇 上海”,这样倒过来输,我也要查出这些数据,该怎么办?

像下面这样,效率太低;
[color=red]sql="select * from 表名 where region like '%上海%' and region like '%徐汇%' and region like '%办事处%';[/color]
另外,加入条件是不限定的,比如,也可以输入4个条件“上海 徐汇 街道 办事处”就不适合了。

各位sql大侠们,有没有写过这样的sql啊,谢谢大家了。

[b]问题补充:[/b]
也不要像百度那样太复杂的搜索功能的,
其实我的目的就是查出region这个字段里带“%上海%徐汇%办事处%”这样的数据,
只是
[color=red]sql="select * from 表名 where region like '%上海%' and region like '%徐汇%' and region like '%办事处%'; [/color]
这样写太烦了而已。
能不能先查出带%上海%的所有数据,再在查出的数据里查带%徐汇%的数据,再在其中查出带%办事处%的记录。
这样要用复合查询语句吧?
怎么写?

  • 写回答

5条回答 默认 最新

  • wanghaolovezlq 2009-10-16 09:47
    关注

    这种应该用搜索的分词来做吧

    评论

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面