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)
甲骨文设置:
\n\nCREATE 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/\nRun Code Online (Sandbox Code Playgroud)\n\n询问:
\n\nSELECT 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;\nRun 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 \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |