`like`子句不能获取接近我的所有结果

时间:2014-10-14 01:02:24

标签: c++ sql qt sqlite sql-like

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();

如何让查询执行正常行为?

2 个答案:

答案 0 :(得分:1)

:text

是一个名为text

的查询参数
':text'

是字符串":text"

同样,"%:text"正是如此;你的参数没有被解析,因为它在一个字符串里面。

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

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

答案 1 :(得分:-1)

删除:后的%。像这样:

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

请注意,该值区分大小写