我正在尝试找出一种将“anagram”函数作为 MySQL 上的存储过程的方法。假设我有一个包含字典中所有单词的数据库 - 我想输入一些字母的参数作为 VARCHAR 并取回构成这些字母的字谜的单词列表。
我想我想说的是,如何运行 SQL 命令来表示“选择与参数长度相同且包含参数中每个字母的所有单词”。
我探索了可用的字符串函数 ( http://www.hscripts.com/tutorials/mysql/string-function.php )。我确信这些可以以某种方式结合使用,但当它变得复杂时就无法完全正确地使用语法。
我是 SQL 的新手,似乎可用的字符串函数非常有限。任何帮助将不胜感激:)
最佳答案
你没有;要求关系数据库做这件事是不明智的。
但是,如果有人持枪逼迫我使用关系数据库实现字谜查找,我会像这样对其进行非规范化:
word | sorted
-----|-------
bar | abr
bra | abr
keel | eekl
leek | eekl
其中“已排序”由“word”中的所有字母组成,使用您喜欢的任何规则进行排序,只要它是总顺序即可。您可以使用 SQL 以外的东西来计算该部分。
然后你可以找到类似这样的字谜:
SELECT w2.word AS anagram
FROM words w1
JOIN words w2 ON w1.sorted=w2.sorted
WHERE w1.word = 'leek'
AND w2.word <> w1.word
关于mysql - 如何为 MySQL 中字符串的每个字母分配一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157529/