MySQL:使用它可以生成比我需要的更多的结果

MySQL:使用它可以生成比我需要的更多的结果,mysql,Mysql,看起来我的like-mySQL命令生成的结果比我希望的要多。我不明白为什么,我想知道是否有人可以帮助我完成我的目标,帮助我理解为什么我的查询没有按预期工作。我从我的查询中去掉了左边的“%”,这有点帮助,但它仍然生成了许多我不需要的结果 例如: User input ($searchword): 'ad' => returns[4]: 'Adele Necklaces, Adwarrior Swords

看起来我的like-mySQL命令生成的结果比我希望的要多。我不明白为什么,我想知道是否有人可以帮助我完成我的目标,帮助我理解为什么我的查询没有按预期工作。我从我的查询中去掉了左边的“%”,这有点帮助,但它仍然生成了许多我不需要的结果

例如:

User input ($searchword): 'ad' => returns[4]: 
                     'Adele Necklaces, 
                      Adwarrior Swords, 
                      Affirmative T-shirt, 
                      Agtec Radio'

Trying to get THESE results for user input($searchword): 'ad' => returns[2]: 
                                                   'Adelete Neckalces, 
                                                    Adwarrior Swords'
SQL命令:

("SELECT * FROM products WHERE prod_name LIKE '".$searchword."%'")

我的朋友,我相信你错了。工作完全符合你的期望

mysql> create table searchterms (term varchar(64), key(term) );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into searchterms (term) values 
('Adele Necklaces'), ('Adwarrior Swords'),
('Affirmative T-shirt'), ('Agtec Radio');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> set @st='ad';
Query OK, 0 rows affected (0.00 sec)

mysql> set @st='ad';
Query OK, 0 rows affected (0.00 sec)

mysql> select * from searchterms where term like concat(@st, '%');
+------------------+
| term             |
+------------------+
| Adele Necklaces  |
| Adwarrior Swords |
+------------------+
2 rows in set (0.00 sec)

如果
$searchword
左侧有一个%,则这些结果是有意义的。我不认为你把它移到了正确的位置。删除项链,武士剑正是我从这个查询中所期望的。或者这就是您要归档的结果?我不知道为什么搜索
ad%
会返回您显示的最后两个结果。您确定要在某处修改搜索字符串吗?您是否查看了发送到数据库的实际查询运行情况,以确保它符合您的预期?对于%ad%的结果,肯定的T恤衫让我感到困惑。莫名其妙!我知道!我也是!前两个结果与预期一样,之后,它几乎以“a”开头,然后第二个字母按字母顺序排列……在我的例子中,它返回的结果比2多有什么原因吗?对我来说,前两个结果与预期的一样,在那之后,术语基本上以“a”开头,然后第二个字母按字母顺序排列……删除左侧的
%
将忽略搜索字符串左侧的任何匹配项。@MHZ您的模式是什么样的?