用于选择列中由空格分隔的最常见子字符串的 MySQL 查询?

标签 mysql string varchar

我有一个 MySQL 食谱数据库。其中一列 NAME 是 varchar(255)。每个 NAME 可以是多个单词(例如,“Chocolate Chip Cookies”和“Oatmeal Cookies”)。

我正在寻找一种方法来有效地将食谱名称解析为单个单词,然后返回最常用单词的列表。因此,鉴于上面的两个配方,查询将返回:

cookies ,2 巧克力,1 芯片,1 燕麦片,1

有没有一种有效的方法来做到这一点?我可以查询所有结果,将每个食谱名称拆分成单词,然后构建一个数据结构在数据库外执行此操作。或者,我可以提前拆分字符串并构建一个表。

我想我真正希望的是利用数据库来更快地执行此操作(例如使用索引)。我不知道单个查询是否可行。

那么,我是否必须提前构建表格?或者这可以通过单个查询高效地完成吗?

谢谢!

最佳答案

如果您的表使用 MyISAM 存储引擎并且您在 NAME 列上构建了一个 FULLTEXT 索引,您可以使用 myisam_ftdump's --count option以获得每个单词的总计数。然而,遗憾的是,这不在 SQL 范围内。

关于用于选择列中由空格分隔的最常见子字符串的 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938869/

相关文章:

sql - 这如何不使 varchar2 效率低下?

mysql - 即使表和引擎的数据类型相同也无法创建外键?

php - 数据库和 php 调试器

c# - 字符串每 3 个单词拆分一次

sql-server - SQL Server : error converting data type varchar to numeric

sql - 为什么 VARCHAR 需要指定长度?

mysql - 每天数百万新行的数据库架构

MySQL (JDBC) - 基于列值的排行榜排名

sql - 为什么 Oracle 9i 将空字符串视为 NULL?

c - 7 个测试用例中有 1 个不能使用这个简单的 C 程序来查找子字符串