SQLite LIKE語句找不到匹配我在Python 3中有一段代碼來檢索一個id。 LIKE語句的列是18行,其中包含以下文本。當它應該
「Tercera司克1-」 從1號到18號
我匹配的代碼如下:
lig=liga[0]
print('lig',lig)
cur.execute('''SELECT id FROM Campeonato WHERE id_pais=? AND nombre LIKE
?''', (self.idp,'%'+lig+'%'))
foo=cur.fetchall()
print('foo',foo)
if foo is None or len(foo)==0:
return
elif len(foo)>1:
if len(liga)>1: lig2=' '+liga[-1]
print('buscador','%'+lig+'%'+lig2)
cur.execute('''SELECT id FROM Campeonato WHERE id_pais=? AND nombre
LIKE ?''',(self.idp,'%'+lig+'%'+lig2))
foo=cur.fetchall()
print('foofinal',foo)
if len(foo)>1:
if len(liga)>2:
lig=' '.join(liga[0:2])
cur.execute('''SELECT id FROM Campeonato WHERE id_pais=? AND
name LIKE ?''',(self.idp,'%'+lig+'%'+lig2))
foo=cur.fetchall()
if len(foo)!=1:
print('Revisar partido. No se encuentra la liga entre
varias opciones')
return
else:
id_competicion=foo[0][0]
elif len(foo)==0:
print('Revisar partido, no se encuentra la liga')
return
else:
id_competicion=foo[0][0]
elif len(foo)==1:
id_competicion=foo[0][0]
else:
id_competicion=None
cur.close()
所以,把它簡單。首先你用LIKE搜索「Tercera」,並返回結果的全部18個結果。然後你搜索「Tercera +任何+空格+數字」,並且應該只返回一個結果並退出循環。
西甲變量是從BSoup,並在年底,所有18個查詢如下:
First look for %Tercera% and retrieve 18 results
Then look for %Tercera% 2 or whichever of the 18 numbers
的事是。除了一個以外,一切都是成功的。當它必須搜索%Tercera%3時,它不會與任何內容匹配,並且數據庫中的「TerceraDivisiónG 3」是。
我的意思是沒有其他差異來解釋爲什麼它只發生在數字3,我甚至不知道要尋找什麼。
任何想法,爲什麼它會這樣?
請附上您的數據庫模式或桌 – moritzg
的一些例子有3之後的空白? –