Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL准备语句,类似“%”?%”_Sql_Sqlite - Fatal编程技术网

SQL准备语句,类似“%”?%”

SQL准备语句,类似“%”?%”,sql,sqlite,Sql,Sqlite,我正在我的应用程序中实现一个搜索功能,我希望它是“智能的”。搜索被转换为SQL查询 我想要以下功能:搜索'litago'将显示'litago 500ml',litago 375ml','Small litago','superlitago223' 这是‘这里的任意字符串’+‘利塔戈’+‘这里的任意字符串’ 我想在SQL查询中这样做: query = 'SELECT * FROM varer WHERE navn LIKE '%?%' ' ??是用户输入,litago只是一个例子 但是,这会导致

我正在我的应用程序中实现一个搜索功能,我希望它是“智能的”。搜索被转换为SQL查询

我想要以下功能:搜索'litago'将显示'litago 500ml',litago 375ml','Small litago','superlitago223'

这是‘这里的任意字符串’+‘利塔戈’+‘这里的任意字符串’

我想在SQL查询中这样做:

query = 'SELECT * FROM varer WHERE navn LIKE '%?%' '
??是用户输入,litago只是一个例子

但是,这会导致语法错误。有没有办法这样做

编辑:使用Python3.6.4,下面是

发件人:

有两种向查询提供数据的方法。真正糟糕的方法是编写字符串:

sql="insert into example values('%s', %d)" % ("string", 8390823904)
cursor.execute(sql)
如果字符串中有任何单引号,则语法无效。此外,SQL注入攻击就是这样发生的。相反,您应该使用绑定:

sql="insert into example values(?, ?)"
cursor.execute(sql, ("string", 8390823904))
我认为你的需求就像操作员使用的一样简单

CREATE TABLE t
(
id           int, 
Name              varchar(100) 
);

insert into t values(1,  'litago'),
(2,      'litago 500ml'),
(3,      'Small litago'),
(4,      'litago 375ml'),
(5,      'johb');
postgresql示例,它适用于所有sql

 select * from t where name like'%litago%' 
此查询的结果

id  name
1   litago
2   litago 500ml
3   Small litago
4   litago 375ml
在python中,您的语句应该是

query = "SELECT * FROM varer WHERE navn LIKE '%?%' "

不能在由单引号分隔的字符串中使用单引号而不转义它们,但是可以在双引号分隔的字符串中使用单引号。 差不多

query = "SELECT * FROM varer WHERE navn LIKE '%?%' "

应该能解决你的问题

使用“%”| |?| |“%”。你用什么语言?在变量查询的定义中是否确实有两个尾随单引号?query='SELECT*FROM varer WHERE navn LIKE''%1!'?| |''%2!''经验a请告诉我们a您使用的是什么语言,然后b向我们展示完整的代码?并将通配符附加到传递给prepared语句的值上。我想要的是一个使用用户输入的prepared语句。其中名称类似于用户_input@owninggreendragsdude那么问题是您的问题是使语句正确吗?@owninggreendragsdude您需要使用+操作创建字符串完整查询和concat变量对于python来说很容易