Mysql 获取varchar中不同字符的数量(按位置)

Mysql 获取varchar中不同字符的数量(按位置),mysql,sql,Mysql,Sql,我有一个带有varchar的表,比如一列和数据,例如abcdefghi 我想创建一个查询,当我搜索列a中的数据时,它会按位置为我提供不同字符的数量 我的意思是,如果我搜索aacdefghi,它会显示1。 如果我搜索bcdefghia,它会显示9 字符串的长度将是相同的 有什么办法吗 谢谢 编辑: 我的桌子看起来像: A ---- abcdefghi 我认为一个脚本PHP,Perl。。。如果您需要MySQL解决方案,可以从以下内容开始: SELECT col, COUNT(*) FROM t

我有一个带有varchar的表,比如一列和数据,例如abcdefghi

我想创建一个查询,当我搜索列a中的数据时,它会按位置为我提供不同字符的数量

我的意思是,如果我搜索aacdefghi,它会显示1。 如果我搜索bcdefghia,它会显示9

字符串的长度将是相同的

有什么办法吗

谢谢

编辑: 我的桌子看起来像:

A
----
abcdefghi

我认为一个脚本PHP,Perl。。。如果您需要MySQL解决方案,可以从以下内容开始:

SELECT col, COUNT(*)
FROM
  tablename INNER JOIN n
  ON CHAR_LENGTH(tablename.col) >= n.n
WHERE
  SUBSTRING(tablename.col,n.n,1)!=SUBSTRING('aacdefghi', n.n, 1)
GROUP BY
  col;

您需要一个包含数字1的表n。字符串的最大长度。请看小提琴。

您要找的与小提琴相似。您可以将其作为存储例程在MySQL中实现,请参见以下示例:


您可以根据自己的需要对此进行修改。不过速度会很慢,你不应该在大数据集上使用它。

@echo\u Me我不知道从哪里开始。。。我在编辑中提供数据。如果有人理解,请为我解释,我根本不知道你想要什么。你为什么要隐藏你的数据并使用ABCDEFGHJKRLAKJLGDSKAGFKSGFT这是数据@Nir为什么第二个字符串应该返回10?而不是9?为什么我需要第二个表?@Nir因为没有预定义的函数来满足您的要求,我使用第二个表来模拟for循环,它不会非常有效,但您也不能做很多其他事情。。。请注意,对于相同的字符串,我的查询不会返回任何行,但如果需要,可以更改此行为