sql - Oracle:一个查询,它计算字符串中所有非字母数字字符的出现次数

标签 sql regex oracle alphanumeric

对出现在 Oracle 数据库列中的字符串中的所有非字母数字字符的出现次数进行计数的最佳方法是什么。

在尝试寻找解决方案时,我意识到我有一个与问题无关的查询,但我注意到我可以修改它以希望解决这个问题。我想出了这个:

SELECT  COUNT (*), SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
FROM    TABLE_NAME
WHERE   REGEXP_LIKE(UPPER(TITLE), '[^A-Z,^0-9]')
GROUP BY    SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
ORDER BY COUNT(*) DESC;

这可以找到第一个非字母数字字符,但我想计算整个字符串中的出现次数,而不仅仅是第一次出现。例如。目前我的查询分析“a(字符串)”会找到一个左括号,但我需要它来找到一个左括号和一个右括号。

最佳答案

有一个不起眼的 Oracle TRANSLATE 函数可以让您这样做,而不是 regexp:

select a.*,
       length(translate(lower(title),'.0123456789abcdefghijklmnopqrstuvwxyz','.')) 
from table_name a

关于sql - Oracle:一个查询,它计算字符串中所有非字母数字字符的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831362/

相关文章:

sql - Oracle SQL Plus WITH 子句 "invalid identifier"

php - 我的页面出现mysql错误

php - 双重扩展将绕过扩展检查规则

python - 在正则表达式中选择破折号后的单词

oracle - 如何在多个 Oracle 数据库中更改密码?

mysql - 查询计划中的行列令人困惑

mysql - 删除sql中的表并添加

php - 自动链接正则表达式

oracle - 有没有办法在配置为 'US7ASCII' 的 Oracle 数据库中存储 Unicode 文本

oracle - 每个项目都符合条件