Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql列中所有字符的ASCII和_Mysql_Sum_Ascii - Fatal编程技术网

Mysql列中所有字符的ASCII和

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,

我有一个表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, 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码相乘,那就太好了