获取oracle列中有哪些特殊字符以及出现次数的列表

Jer*_*rra 0 sql oracle count special-characters

我正在寻找一种方法来获取特殊字符的列表以及它们在我的专栏中出现的次数。我尝试过使用 regexp_count ,它有效,但我不确定如何扩展它以使其适用于一个查询中的所有特殊字符。

例如,对于语法 = 'x=y*100' 和以下查询,我得到

select *
  from (
         select regexp_count(syntax, '\*') as charCnt, syntax
           from tblTemp
       ) 
     where charCnt > 0
Run Code Online (Sandbox Code Playgroud)

charCnt=1 且语法='x=y*100'。

这是正确的,但我希望能够回来

specChar Cnt

\*       1
=        1
etc..
Run Code Online (Sandbox Code Playgroud)

MT0*_*MT0 5

甲骨文设置

\n\n
CREATE TABLE table_name(\n  id INT,\n  value NVARCHAR2(200)\n);\n\nINSERT INTO table_name\n  SELECT 1, N\'y=20x+3\'          FROM DUAL UNION ALL\n  SELECT 2, N\'***^%$%$%*&*.&\\?\' FROM DUAL UNION ALL\n  SELECT 3, UNISTR(\'\\00B5\\00B6\\00B5\')  FROM DUAL UNION ALL\n  SELECT 4, N\'!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()\'\n            || N\'!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()\'\n            || N\'!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()\'\n            || N\'!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()!"\xc2\xa3$%^&*()\' FROM DUAL;\n\nCREATE OR REPLACE TYPE CHAR_LIST IS TABLE OF CHAR(1 CHAR);\n/\n
Run Code Online (Sandbox Code Playgroud)\n\n

询问

\n\n
SELECT  t.id,\n        --MAX( t.value ) AS value,\n        CAST( c.COLUMN_VALUE AS CHAR(1 CHAR) ) AS character,\n        COUNT(1) AS frequency\nFROM    table_name t,\n        TABLE(\n          CAST(\n            MULTISET(\n              SELECT SUBSTR( t.value, LEVEL, 1 )\n              FROM   DUAL\n              WHERE  REGEXP_LIKE( SUBSTR( t.value, LEVEL, 1 ), \'[^a-zA-Z0-9]\' )\n              CONNECT BY LEVEL <= LENGTH( t.value )\n            ) AS CHAR_LIST\n          )\n        ) c\nGROUP BY t.id, c.COLUMN_VALUE\nORDER BY id, character;\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出

\n\n
        ID CHARACTER  FREQUENCY\n---------- --------- ----------\n         1 +                  1 \n         1 =                  1 \n         2 $                  2 \n         2 %                  3 \n         2 &                  2 \n         2 *                  5 \n         2 .                  1 \n         2 ?                  1 \n         2 \\                  1 \n         2 ^                  1 \n         3 \xc2\xb5                  2 \n         3 \xc2\xb6                  1 \n         4 !                 20 \n         4 "                 20 \n         4 $                 20 \n         4 %                 20 \n         4 &                 20 \n         4 (                 20 \n         4 )                 20 \n         4 *                 20 \n         4 ^                 20 \n         4 \xc2\xa3                 20 \n
Run Code Online (Sandbox Code Playgroud)\n