mysql:字谜查询以提取带有任何字母的每个可能的单词

标签 mysql anagram

我正在构建我的字谜查询,它几乎运行良好。这是我的sql

我使用的字母是“settin?”

区别在于通配符,我将允许用户添加“?”进入现场。

SELECT `word`, 0+ABS(`e`-1)+ABS(`i`-1)+ABS(`n`-1)+ABS(`s`-1)+ABS(`t`-2) AS difference
FROM `TWL06`
WHERE LENGTH(`word`) <= 7
HAVING difference <= 1

我的表结构如下

word | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
--------------------------------------------------------------------------------------------------------------
THIS | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |

查询的问题在于,它只会提取包含差异为 0 或 1 的所有字母的单词。它不会提取长度可能较小、可能包含某些字母或较短单词的单词,例如2 3 4 5 6 个字母长。

我认为 WHERE LENGTH(word) <= 7 会处理长度,但这似乎不起作用。

例如:坐、帐篷、测试

甚至是相差 1 个通配符的单词,例如

TESTY(Y 是通配符)

有什么想法吗?

最佳答案

填充表格:anagram (word,sorted_word),其中word包含“setting”、“apple”等,sorted_word包含“eginstt”、“aelpp”等

要查找设置的字谜词,首先获取排序后的单词:从 anagram where word = "setting"中选择排序的_word然后使用该排序后的单词来获取所有字谜词:从字谜词中选择单词 where Sorted_word =“eginstt”

您也可以在单个查询中完成此操作。

关于mysql:字谜查询以提取带有任何字母的每个可能的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17285723/

相关文章:

c++ - 在单词列表中查找字谜

MySQL Multiple Left Outer Join 查询问题,涉及3张表

mysql - 我不想在一个连接上有多个记录

php - 连接到数据库

python - 如何在线性时间内根据键重新组合列表列表?

java - 样式(递归和越界异常已得到解答,这是新的)

mysql - mysql 如何获取多个最大列值

php - 使用Mysql在php循环中获取数组时出现错误

c++ - 代码审查、C++、Anagram 方法

file - 如何优化从 Go 中的文本文件中查找字谜