MySQL:进行基本搜索

2024-06-16 14:53:54 发布

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

我的数据库中有一个名称表,我希望对其进行模糊搜索,例如我的数据库包含:

Name         ID
John Smith   1
Edward Smith 2
Gabriel Gray 3
Paul Roberts 4

当我通过python搜索数据库时,我只能进行精确匹配搜索。但我希望能做模糊搜索,我可以搜索“史密斯”这个名字,并带回约翰·史密斯和爱德华·史密斯。在


Tags: name名称id数据库名字johnsmithedward
2条回答
import MySQLdb
search_str = 'smith'
conn = MySQLdb.connect(host="localhost", user="me",passwd="pw",db="mydb")
c = conn.cursor()
c.execute("SELECT name FROM mytable WHERE name LIKE %s", '%' + search_str + '%')
c.fetchall()
c.close()
conn.close()

最简单的形式是使用LIKE比较:

SELECT * FROM table WHERE name LIKE '%smith%';

更精细的搜索可以用全文索引(大量文本)、SOUNDEX()(处理英语单词,匹配其他语言是从“有点可行”到“糟糕”)来完成的,levenshtein单词距离等

相关问题 更多 >