mysql - 如何为 MySQL 中字符串的每个字母分配一个变量?

标签 mysql sql string stored-procedures

我正在尝试找出一种将“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/

相关文章:

mysql - 使用 MYSQL 选择表中重复两次的记录

sql - SQL条件插入数据。 SQLite的

java - 将字符串 "abc..z"更改为 "bcd..a"的更好方法?

C++:从文本文件中读取并分离到变量中

MySQL 在我的表中添加了额外的列,如何更新表

php - 使用 PHP 表在行中显示列标题值

mysql - 使用 View 插入记录

mysql - 在 MySQL 中加入一个 Select Distinct 通过连接表重新排序

SQL Server 触发器未按预期运行

java - Java中如何在字符串中的数字和单词之间添加空格?