我有一个带有varchar的表,比如A,列和数据,例如abcdefghi
。
我想创建一个查询,当我在A列中搜索数据时,它会给我不同的字符数量(按位置)。
我的意思是,如果我搜索aacdefghi
,它会说1。
如果我搜索bcdefghia
,它会说9。
字符串的长度将相同。
任何想法如何做到这一点?
由于
修改 我的表看起来像:
A
----
abcdefghi
答案 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/
您可以根据自己的需要进行修改。但它会非常慢,你不应该在大型数据集上使用它。