【发布时间】:2011-12-28 00:03:50
【问题描述】:
在我的 MySQL 数据库中,我有一个这样的术语列表(首字母大写,大多数情况下是复数)
Hairdressers
Restaurants
Beauty Salons
Furnitures For Restaurants
在我的网站上,我有一个搜索栏,用户可以在其中搜索这些词(我的网站是一种 POI 查找器)。搜索栏有自动建议功能,但我的查询有问题。
SELECT * FROM TABLE WHERE word = 'userword%'
因此,如果用户输入“Res”,它将返回所有以“Res”开头的单词。很公平,这行得通,但是在我的数据库中,我也有它们之间有空格的单词(餐厅家具),我希望如果用户输入“Res”,mysql查询也返回餐厅家具。这个我试过了
SELECT * FROM TABLE WHERE word = '%userword%'
是的,这很好用,但是……有点放松……它会返回所有内容,因此如果用户输入“a”,它将返回所有包含 a 的单词……而我不想要这个。
那么如何才能使查询只对每个单词的第一个字母起作用呢?和我的第一个查询一模一样,但要考虑带空格的单词?
【问题讨论】:
-
您可能想将正则表达式传递给 mysql。对不起,但没有时间发布完整的答案:-(
-
全文是要走的路。一个正则表达式也可以,但如果你真的只想要你所说的两种情况,一个 OR 也可以工作:
WHERE word LIKE 'userword%' OR word like '% userword%'(注意第二个查询中用户字之前的空格)。 -
如果 userword = restaurant(不带 s)则不起作用,查询首先返回餐厅的 Fournitures,然后是餐厅
标签: mysql character word code-first autosuggest