我有一个带有名为sections的表的数据库。在这是一个名为head的字段,它有一个全文索引,每个条目有3个条目。 2个条目有摩托车这个词,有一个有摩托车。如果搜索“摩托车”一词,我似乎无法找到返回所有3的方法。
我试过了
SELECT * FROM sections
WHERE MATCH (head) AGAINST ('Motorcycles')
但它只返回复数条目。我也试过了。
SELECT * FROM sections
WHERE head like '%motorcycles%'
但这也只返回复数条目。有没有办法根据“摩托车”返回所有三行?
答案 0 :(得分:1)
您是否尝试过布尔模式?
where match (head) against ('+ Motorcycle*' in Boolean mode)
更多信息是here。
你的where子句有一个额外的“s”:
SELECT * FROM sections WHERE head like '%motorcycle%'
答案 1 :(得分:0)
假设您的问题比您给出的特定motorcylce示例更通用...我不知道您可以直接在SQL中放松约束的方式(没有存储过程来预处理输入) 。我建议用正则表达式预处理输入,以删除/替换使单词复数的字符。然后按照你在单词的单数形式上显示的方式使用。
答案 2 :(得分:0)
如果我的问题正确,我认为你想要这样的事情:
if (SELECT count(1) FROM sections WHERE head like '%motorcycles%')>1
begin
select * FROM selections
WHERE head like '%motorcycle%'
end