Mysql列中所有字符的ASCII和

时间:2016-09-04 14:05:10

标签: mysql sum ascii

我有一个表用户,但我只显示了2列,我想要对name列的所有字符进行求和。

+----+-------+
| id | name  |
+----+-------+
|  0 | user  |
|  1 | admin |
|  3 | edit  |
+----+-------+
例如,用户的ascii总和将是 总和(用户)= 117 + 115 + 101 + 114 = 447

我已经厌倦了这个

SELECT ASCII(Substr(name, 1,1)) + ASCII(Substr(name, 2, 1)) FROM user

但它只有2。

1 个答案:

答案 0 :(得分:0)

你将不得不一次取一个角色来做总和。一种方法是使用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中的encryption functions。添加ASCII值并不是一个特别好的哈希函数(因为不同顺序中具有相同字符的字符串会产生相同的值)。至少,将每个ASCII值乘以位置会好一些。