私は、ほとんどうまく機能しているアナグラムクエリを作成している最中です。ここに私のSQLがあります
私が使っている文字は「セッティン?」
違いは、ユーザーが「?」を追加できるワイルドカードです。フィールドに。
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 文字の長さ。
word
WHERE LENGTH( ) <= 7 で長さを処理できると思っていましたが、うまくいかないようです。
例: SIT、テント、テスト
または、次のような 1 つのワイルドカードの違いを持つ単語でさえ
TESTY (Y はワイルドカード)
何か案は?