我正在构建我的字谜查询,它几乎工作得很好。这是我的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 是通配符)
有任何想法吗?