Mysql列中所有字符的ASCII和
我有一个表users,但我只显示了2列,我想对name列的所有字符求和Mysql列中所有字符的ASCII和,mysql,sum,ascii,Mysql,Sum,Ascii,我有一个表users,但我只显示了2列,我想对name列的所有字符求和 +----+-------+ | id | name | +----+-------+ | 0 | user | | 1 | admin | | 3 | edit | +----+-------+ 例如,用户的ascii和将为 sumuser=117+115+101+114=447 我已经厌倦了这个 SELECT ASCII(Substr(name, 1,1)) + ASCII(Substr(name, 2,
+----+-------+
| id | name |
+----+-------+
| 0 | user |
| 1 | admin |
| 3 | edit |
+----+-------+
例如,用户的ascii和将为
sumuser=117+115+101+114=447
我已经厌倦了这个
SELECT ASCII(Substr(name, 1,1)) + ASCII(Substr(name, 2, 1)) FROM user
但是它只求和2个字符。您必须一次提取一个字符才能进行求和。一种方法是使用while循环编写函数。如果您知道最长的字符串,可以使用SELECT执行此操作:
SELECT name, SUM(ASCII(SUBSTR(name, n, 1)))
FROM user u JOIN
(SELECT 1 as n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL
SELECT 4 UNION ALL SELECT 5 -- sufficient for your examples
) n
ON LENGTH(name) <= n.n
GROUP BY name;
如果你的目标是把字符串转换成可以很容易地比较或固定长度的东西,那么你可以考虑MySQL中的字符串。将ASCII值相加并不是一个特别好的哈希函数,因为具有不同顺序的相同字符的字符串产生相同的值。至少,将每个ASCII值乘以位置会更好一些。
您必须一次提取一个字符才能进行求和。一种方法是使用while循环编写函数。如果您知道最长的字符串,可以使用SELECT执行此操作:SELECT name, SUM(ASCII(SUBSTR(name, n, 1)))
FROM user u JOIN
(SELECT 1 as n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL
SELECT 4 UNION ALL SELECT 5 -- sufficient for your examples
) n
ON LENGTH(name) <= n.n
GROUP BY name;
如果你的目标是把字符串转换成可以很容易地比较或固定长度的东西,那么你可以考虑MySQL中的字符串。将ASCII值相加并不是一个特别好的哈希函数,因为具有不同顺序的相同字符的字符串产生相同的值。至少,将每个ASCII值乘以位置会好一些。
谢谢,它可以工作。我有点新,我需要存储它作为程序。如果你还提到将每一个ascii码相乘,这将是一件好事,因为它是有效的。我有点新,我需要存储它作为程序。如果你也提到将每一个ascii码相乘,那就太好了