在SQL

时间:2019-01-27 03:54:01

标签: mysql sql search

我有一个数据库,其中包含公司及其各自的地址(采用sql结构):

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| company_id | int(11)      | NO   | MUL | NULL    |                |
| city       | varchar(255) | NO   |     | NULL    |                |
| street     | varchar(255) | NO   |     | NULL    |                |
| house      | varchar(5)   | NO   |     | NULL    |                |
| corp       | varchar(2)   | YES  |     | NULL    |                |
| litera     | varchar(4)   | YES  |     | NULL    |                |
| office     | int(25)      | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

我有一个搜索字段,人们很可能在其中用城市或街道或两者同时查询数据库。问题出在这里:

我不知道他们的输入会是什么样。我的意思是说,他们几乎不可能在没有至少指定街道的情况下搜索“ 44”之类的东西,但是他们仍然有很多选择。我将给出几个搜索词:

"Moscow" [just the city]
"Moscow, Leningradsky" [city AND street not including the type of the 
  street - which is "prospekt" ~ "avenue" in english]
"Moscow, Leningradsky pr[ospekt] [city AND street including the type of the 
  street, which may be shortened]
"Moscow, [ulitsa] Uralskaya [ulitsa] [city AND street where type can 
  preceed or succeed the street name itself (ulitsa meaning "street")]

和其他一些选项。我的第一个想法是像在城市和街道栏目中按词条搜索和LIKE搜索一样,但是如果他们输入两个单词怎么办?我什至不能确定第一个单词是城市(因为 他们可能只是以门牌号为第二个字的街道开头。

因此,我有点寻找部分匹配和模糊搜索,但无法真正弄清楚如何将其组合在一起工作。

人们对此有最佳的评价吗?

0 个答案:

没有答案