tablename
的表格,其中包括三个TEXT
列:col_a, col_b, col_c
等。我想从这三列中提取所有长度至少为5个字符的唯一单词(以空格分隔)。"Word"指任何非空格字符的字符串,例如 "foo-123" 将被视为一个单词,"099423" 也是。这些列都是utf8格式InnoDB列。是否有单个查询可以完成此操作?编辑:根据请求,这里有一个示例:(在实际数据中,col_a、col_b和col_c是TEXT字段,并且可能有大量单词。)select id, col_a, col_b, col_c from tablename;
id | col_a | col_b | col_c
----|--------------------|----------------|----------------------
1 | apple orange plum | red green blue | bill dave sue
2 | orange plum banana | yellow red | frank james
3 | kiwi fruit apple | green pink | bill sarah-jane frank
expected_result: ["apple", "orange", "banana", "fruit",
"green", "yellow", "frank", "james", "sarah-jane"]
我不在意结果的顺序。谢谢!
编辑:在上面的示例中,所有内容都是小写的,因为这是我在实际表格中存储所有内容的方式。但是,为了论证起见,如果它包含一些大写字母,我希望查询忽略大小写(这正是我的数据库配置设置所发生的情况)。
编辑2:如有帮助,所有文本列均具有FULLTEXT索引。
编辑3:以下是创建示例数据的SQL:
DROP TABLE IF EXISTS `tablename`;
CREATE TABLE `tablename` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`col_a` text,
`col_b` text,
`col_c` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
LOCK TABLES `tablename` WRITE;
INSERT INTO `tablename` VALUES (1,'apple orange plum','red green blue','bill dave sue'),(2,'orange plum banana','yellow red','frank james'),(3,'kiwi fruit apple','green pink','bill sarah-jane frank');
UNLOCK TABLES;