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