如何检查 "concatenate" 字符串的长度

how to check length of "concatenate" string

有没有人知道如何在 Oracle 中编写查询来获取字符长度:

|  user   |    action   |
-------------------------
|  mary   |  aaa        |    # 3 characters from action
|  mary   |  bbbbb      |    # 5 characters from action
|  mary   |  c          |    # 1 character from action
|  adam   |  xx         |    # 2 characters from action
|  adam   |  yyyy       |    # 4 characters from action
|  adam   |  zzzzzzz    |    # 7 characters from action

所以结果应该是每个字符的总和:

|  mary |    9    |
|  adam |   13    |

谢谢。

SUM + LENGTH 以及 GROUP BY 用户。第 1 - 14 行中的示例数据;您需要的查询从第 15 行开始。

SQL> WITH
  2     test (cuser, action)
  3     AS
  4        (SELECT 'mary', 'aaa' FROM DUAL
  5         UNION ALL
  6         SELECT 'mary', 'bbbbb' FROM DUAL
  7         UNION ALL
  8         SELECT 'mary', 'c' FROM DUAL
  9         UNION ALL
 10         SELECT 'adam', 'xx' FROM DUAL
 11         UNION ALL
 12         SELECT 'adam', 'yyyy' FROM DUAL
 13         UNION ALL
 14         SELECT 'adam', 'zzzzzzz' FROM DUAL)
 15    SELECT cuser, SUM (LENGTH (action))
 16      FROM test
 17  GROUP BY cuser;

CUSE SUM(LENGTH(ACTION))
---- -------------------
mary                   9
adam                  13

SQL>

在聚合中使用 LENGTH 函数:

SELECT "USER",
       SUM( LENGTH( action ) ) AS total_length
FROM   table_name
GROUP BY "USER"

其中,对于您的示例数据:

CREATE TABLE table_name( "USER", action ) AS
SELECT 'mary', 'aaa'     FROM DUAL UNION ALL
SELECT 'mary', 'bbbbb'   FROM DUAL UNION ALL
SELECT 'mary', 'c'       FROM DUAL UNION ALL
SELECT 'adam', 'xx'      FROM DUAL UNION ALL
SELECT 'adam', 'yyyy'    FROM DUAL UNION ALL
SELECT 'adam', 'zzzzzzz' FROM DUAL;

输出:

USER | TOTAL_LENGTH
:--- | -----------:
mary |            9
adam |           13

db<>fiddle here