如何编写SQL查询来搜索列中的子字符串,子字符串是一个变量

时间:2016-04-26 07:59:06

标签: sql sqlite

我编写了一个sqlite3查询来执行以下内容,

cur.execute("select * from table where column like '%s'"% (variable1))

使字符串与variable1完全匹配。 但我想要一个可以显示的sqlite3查询:

cur.execute("select * from table where column *contains* '%s'"% (variable1))

我应该写什么查询找到包含'variable1'的任何字符串。
任何帮助都会很明显。

3 个答案:

答案 0 :(得分:0)

请参阅 LIKE 功能很简单。

如果您想搜索字符串,则必须将其放在单引号中:

搜索以s

开头的所有名称
select name from names where name like 's%';

搜索以s

结尾的所有名称
select name from names where name like '%s';

搜索包含s

的所有名称
select name from names where name like '%s%';

但是,如果您已将字符串存储在变量 var

你必须这样做:

select name from names where name like var;

答案 1 :(得分:0)

要忽略字符,您必须将百分号添加到LIKE模式中(并将它们加倍,以便%运算符不会尝试替换它们):

cur.execute("select * from table where column like '%%%s%%'" % (variable1))

但是直接字符串插值会带来格式化问题以及可能的SQL注入。更好地使用参数:

cur.execute("select * from table where column like ?", ['%' + variable1 + '%'])

答案 2 :(得分:0)

尝试

cur.execute("""从表中选择*,其中列'%{}%'""" .format(变量))

请参阅此链接以获取sql

SQL SELECT WHERE field contains words