2014-01-05 122 views
0

如何在Python中编写SQL查询来选择元素LIKE IN Python list?Python SQLite SELECT LIKE IN [list]

例如,我有一个字符串

Names=['name_1','name_2',..., 'name_n'] 

和SQLite_table的Python列表。

我的任务是找到最短的办法

SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_1%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_2%' 
... 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_n%' 
+0

http://stackoverflow.com/q/15041534/2266261的副本? – Dunno

+0

不是。问题是LIKE。 – drastega

+1

'SELECT元素FROM SQLite_table WHERE element_name LIKE'%name_1%'或者element_name LIKE'%name_2%'或者element_name LIKE'%name_n%'''? – PostMan

回答

2

您需要的形式name_1|name_2|name_3|…,您可以生成使用'|'.join(Names)的正则表达式:

SELECT elements FROM SQLite_table WHERE element_name REGEXP 'name_1|name_2|name_3|…|name_n' 

检查How do I use regex in a SQLite query?的说明介绍如何在SQLite中使用正则表达式。

+0

没有REGEX运算符,并且链接的答案表示REGEXP默认情况下不可用。 –

+0

抱歉,错字。但是,链接的答案提供了足够的信息来安装和使用'REGEXP'运算符。例如,[这个答案](http://stackoverflow.com/questions/5365451)在5行Python中安装操作符。 –

1

Mmhh

Names=['name_1','name_2','name_n'] 
for i in Names: 
    sql = "SELECT elements FROM SQLite_table WHERE element_name LIKE '%" + i + "%'" 
    print sql 

SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_1%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_2%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_n%'