You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中计算字符串总ASCII值的最优方法是什么?

简便计算字符串所有字符的ASCII值总和

嘿,我完全懂你手动逐个字符写ASCII('X')累加的痛苦——这活儿不仅繁琐还容易出错!下面针对不同主流SQL数据库,给你提供不用手动拆分字符的简便解法:

Oracle 解法(适配你的DUAL表场景)

利用CONNECT BY生成字符位置序列,自动遍历每个字符计算ASCII值并求和:

SELECT SUM(ASCII(SUBSTR('DESIGNATION OF EMPLOYEE', LEVEL, 1))) AS "TOTAL ASCII"
FROM DUAL
CONNECT BY LEVEL <= LENGTH('DESIGNATION OF EMPLOYEE');

原理:LEVEL会生成从1到字符串总长度的连续数字,SUBSTR按位置提取单个字符,最后用SUM累加所有字符的ASCII值。

SQL Server 解法

用递归CTE生成字符位置,再逐个计算求和:

WITH CharPositions AS (
    SELECT 1 AS Pos, 'DESIGNATION OF EMPLOYEE' AS Str
    UNION ALL
    SELECT Pos + 1, Str
    FROM CharPositions
    WHERE Pos < LEN(Str)
)
SELECT SUM(ASCII(SUBSTRING(Str, Pos, 1))) AS "TOTAL ASCII"
FROM CharPositions;

MySQL 8.0+ 解法

同样用递归CTE实现自动遍历:

WITH RECURSIVE CharPositions AS (
    SELECT 1 AS Pos, 'DESIGNATION OF EMPLOYEE' AS Str
    UNION ALL
    SELECT Pos + 1, Str
    FROM CharPositions
    WHERE Pos < LENGTH(Str)
)
SELECT SUM(ASCII(SUBSTRING(Str, Pos, 1))) AS `TOTAL ASCII`
FROM CharPositions;

PostgreSQL 解法

利用字符串拆分函数简化操作:

SELECT SUM(ASCII(ch)) AS "TOTAL ASCII"
FROM UNNEST(STRING_TO_ARRAY('DESIGNATION OF EMPLOYEE', NULL)) AS ch;

这些方法的好处是通用适配任意长度的字符串,不用因为字符串内容变化而修改代码,彻底摆脱手动拆分的麻烦~

内容的提问来源于stack exchange,提问作者AMAN KAG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 09:13:12