2014-01-05 171 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%'