2017-09-26 111 views
1

我在C++中使用SQLite来查询数据库。我想用LIKE运营商在select语句如SQLite C++语句格式

SELECT * FROM table WHERE columnName LIKE '%abc%' 

但我需要为abc的值绑定在上面的语句查询。通常,对于像SELECT * FROM table WHERE [email protected]这样的正常语句,我们可以使用query.bind(@name, 'name');

但是对于LIKE运算符,我无法使其工作。我不确定我是否应该将其作为'%@name%'?这不起作用并引发绑定错误异常。

任何建议都会非常有帮助,因为否则,我需要浏览具有100行的整个搜索结果,并检查每行的大字符串数组中的值。我们的想法是将字符串数组元素作为LIKE运算符的绑定值来搜索数据库并获取一行。

任何想法?

非常感谢,提前。

Esash

+1

绑定只能通过参数值,而不是其他地方工作的声明。您将不得不使用字符串操作来构造LIKE子句,或者参阅https://stackoverflow.com/questions/4329953/c-sharp-sqlite-parameterized-select-using-like。 –

+2

您是否尝试过'LIKE @ name'和'query.bind(“@ name”,“%”+ abc +“%”)'[需要修复我的语法]? –

回答

1

如果名称是一个变量,使用:

name = "%" + name + "%"; 
query.bind("@name", name); 
+0

非常感谢,它像一个魅力。 – Esash

2

您可以添加百分号结合后:

... WHERE Col Like '%' || ? || '%'