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

时间:2014-02-19 21:59:40

标签: mysql sql

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

我想创建一个查询,当我在A列中搜索数据时,它会给我不同的字符数量(按位置)。

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

字符串的长度将相同。

任何想法如何做到这一点?

由于

修改 我的表看起来像:

A
----
abcdefghi

2 个答案:

答案 0 :(得分:0)

我认为脚本(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)。请参阅小提琴here

答案 1 :(得分:0)

您要找的与Levenshtein distance类似。您可以在MySQL中将其实现为存储例程,请参阅此处的示例:

http://kristiannissen.wordpress.com/2010/07/08/mysql-levenshtein/

您可以根据自己的需要进行修改。但它会非常慢,你不应该在大型数据集上使用它。