`like`子句并不能得到所有接近我所说的结果

`like` clause does not fetch all the results that near to my word

本文关键字:结果 接近 并不能 like 子句      更新时间:2023-10-16

like子句不想获取所有接近单词的结果,我必须写完整的句子才能获得,例如:

我在数据库中有以下数据:

  • Lion king
  • lionheart
  • level completed
  • good morning

我想获取Lion king,当我写单词lion的这一部分时,通常它必须获取Lion kinglionheart,但在我的情况下,它什么都不获取,除非必须写完整的句子来获取数据。

我尝试使用以下查询:

  • SELECT * FROM table WHERE name LIKE '%text'

  • SELECT * FROM contacts WHERE name LIKE '%text' OR name LIKE 'text%' OR name LIKE '%text%' OR name LIKE text

注意:
我使用C++ Qt框架,下面是我做的内容

qry.prepare("SELECT * FROM table WHERE name LIKE '%:text'");
qry.bindValue(":text", ui->searchBox_txt->text());
qry.exec();

如何进行查询以进行正常行为

:text

是名称为text 的查询参数

':text'

是字符串":text"

类似地,"%:text"正是它的本质;您的参数未被解析,因为它位于字符串内部。

您需要使用连接运算符(||)将中的参数与'%'连接起来:

SELECT * FROM table WHERE name LIKE '%' || :text || '%'

删除%之后的:。类似这样的东西:

SELECT * FROM table WHERE name LIKE '%text%'

还请注意,该值区分大小写