在我的Mysql DB中,我有一个术语列表,如(首字母大写,大部分时间是复数)
Hairdressers
Restaurants
Beauty Salons
Fournitures For Restaurants
在我的网站上,我有一个搜索栏,用户可以搜索这些词(我的网站是一种POI查找器)。但我的查询有问题。
SELECT * FROM TABLE WHERE word = 'userword'
1:如果用户进入餐馆,它就不起作用,因为他把'r'放在小写字母上。 2:如果用户进入餐厅要么是因为他没有把它变成复数
我尝试了SELECT * FROM TABLE WHERE word like 'userword'
这解决了Capital leters的问题,但是当用户以单数形式输入单词时,我不知道如何使查询起作用。是在DB中添加该单词的唯一解决方案吗?
谢谢
答案 0 :(得分:2)
对于一个正则表达式来说,也可以更好地匹配复数名称测试,仅用于单词末尾的附加s:
SELECT * FROM table where word REGEXP '^userword[s]?'
请注意,默认情况下,MySQL中的正则表达式匹配不区分大小写。
答案 1 :(得分:1)
使用LIKE时,可以使用%来表示通配符
所以:
SELECT * FROM table where word like '%userword%'
匹配
userword, userwords, superuserwords, ...
但是如果你这样使用LIKE(注意额外的 s ):
SELECT * FROM table where word like '%userwords%'
不匹配:
userword, superuserword, ...
答案 2 :(得分:1)