【发布时间】:2014-05-23 04:19:17
【问题描述】:
我正在制作一个拼字游戏助手,您可以在其中输入字母并查看可以从中组成哪些单词。我有一个包含所有单词的 MySQL 表,但我无法检索它们。到目前为止,这是我所拥有的:
SELECT
word
FROM
dictionary
WHERE
word REGEXP '^[example]*$'
但这不起作用,因为它将返回包含多个a 的单词,例如。有什么办法可以实现吗?
(我也对任何不使用正则表达式的方法持开放态度,尽管看起来正则表达式似乎是最好的方法)。
【问题讨论】:
-
我正在考虑一个按顺序对字符进行排序的存储过程。您可以在数据库中为所有单词保留第二列,以便预先计算排序的字符串。然后调用存储过程对“图块”进行排序并加入“排序”列。
-
扩展 Derek 的观点 - 确定两个数组是否相等(忽略顺序)的最简单方法是对两者进行排序并检查。您需要做的就是对单词中的字母进行排序,然后对您的单词中的字母进行排序。然后就是一个简单的循环问题。这在存储过程中应该很容易实现。
-
@Derek 这仅适用于字谜,但我也希望它返回长度不同的单词。例如,“dog”不仅应该返回“god”,还应该返回“do”和“go”。不幸的是,该方法不会这样做。
标签: sql regex expression