php - 文本搜索以与 Mysql 数据库表进行比较

标签 php mysql database text

假设我有一个包含单词的字符串。其中一些单词可能是复合词。

我还有一个 MySQL 数据库,其中包含一个表,该表包含一个名为“words”的列。此列可能包含出现在我的字符串中的单词,包括复合词。

当我只有字符串时,我希望能够找出要从数据库中检索哪些行。不能将其拆分为空格字符,因为这将无法检测数据库中的任何复合词是否出现在字符串中。

关于如何解决这个问题有什么建议吗?

最佳答案

您可以通过以下方法来完成此操作。我们假设您的字符串以空格作为分隔符并且从不包含逗号。

select *
from words w
where find_in_set(w.word, replace(<your string>, ' ', ',')) > 0;

如果字符串中的分隔符有点复杂 - 比如说它确实有标点符号,那么您可能最好使用 regexp 而不是 find_in_set:

select *
from words w
where concat(',', <your string>, ',') REGEXP concat('[ ,.!?]', w.word, '[ ,.!?]')

关于php - 文本搜索以与 Mysql 数据库表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636892/

相关文章:

php - 查询并显示mysql搜索结果

php - 在数字之间添加字符

php - 在 cakephp 3.x 的整个项目中使用一种日期格式

mysql - SQL:获取表摘要/统计信息

mysql - 具有条件的 MySQL 中 Row 中的值总和

python - 当我尝试从 MySQL 获取数据时,类型错误: 'Connection' 对象不可迭代

php - 如何拆分一个字符串并找到一个字符串在另一个字符串中的出现?

php - 阻止用户访问个人资料

php - 数据库列内的静态值

PHP Loop Detect First Instance of each Letter of MySQL 结果