比较sqlite中表中两列中的子字符串

2024-06-16 13:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python并尝试比较SQL中的两个表,并通过部分国家名称来匹配它们。到目前为止,我已经得到了完全匹配的国家名称。我在尝试获取部分匹配时遇到问题。我试图找到匹配的一个例子是一张表中的“缅甸”和另一张表中的“缅甸(缅甸)”

conn = sqlite3.connect('CheapestDestinations.db')
c = conn.cursor()

c.execute('select FinalDestinations_table.CountryName, advisory_table.Country \
    FROM FinalDestinations_table JOIN advisory_table \
    WHERE FinalDestinations_table.CountryName like advisory_table.Country') 
c.fetchall() 

这是我的结果:

[('Mexico', 'Mexico'),
 ('Canada', 'Canada'),
 ('Costa Rica', 'Costa Rica'),
 ('Barbados', 'Barbados'),]

Tags: 名称sqltable国家conncountry例子mexico
2条回答

连接要与运算符LIKE一起使用的%通配符,并将WHERE子句更改为ON子句,因为您要加入表:

c.execute('select FinalDestinations_table.CountryName, advisory_table.Country \
    FROM FinalDestinations_table JOIN advisory_table \
    ON FinalDestinations_table.CountryName like "%" || advisory_table.Country || "%" \
    OR advisory_table.Country like "%" || FinalDestinations_table.CountryName || "%"') 

可以使用%通配符找到部分匹配。以您的例子:

conn = sqlite3.connect('CheapestDestinations.db') c = conn.cursor()

c.execute("select FinalDestinations_table.CountryName, advisory_table.Country 
\ FROM FinalDestinations_table JOIN advisory_table 
\ WHERE FinalDestinations_table.CountryName like '%' || advisory_table.Country || '%'") c.fetchall() 

此更改将{}与包含该文本的{}中的国家匹配;e、 g.“缅甸”将与“缅甸”、“缅甸”和“另一个缅甸名称”匹配

有关更多示例和用法,请参见this link

相关问题 更多 >