sql - 如何计算 Oracle varchar 值中某个字符的出现次数?

标签 sql oracle count oracle10g

如何计算字符 - 的出现次数在 varchar2 字符串中?

例子:

select XXX('123-345-566', '-') from dual;
----------------------------------------
2

最佳答案

干得好:

select length('123-345-566') - length(replace('123-345-566','-',null)) 
from dual;

从技术上讲,如果您要检查的字符串仅包含您要计数的字符,则上述查询将返回 NULL;以下查询将在所有情况下给出正确答案:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0) 
from dual;
coalesce 中的最后一个 0捕获您在空字符串中计数的情况(即 NULL,因为在 ORACLE 中 length(NULL) = NULL)。

关于sql - 如何计算 Oracle varchar 值中某个字符的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169471/

相关文章:

oracle - 将字符串数组传递给过程并在带有 IN 的 WHERE 子句中使用它

java - 按扩展名列出和计数文件

SQL - 添加计数 if 语句

sql - 如何在Yii Framework 2 ActiveRecord的join函数中使用子查询?

Mysql,SUM 列和 GROUP BY HOUR

java - Postgres : How to get SELECT to detect new insertions within a specific table

mysql - 需要帮助优化一个 sql 语句与几个 "field IN (subselect)"或在一起

java - Hibernate 和数据库功能与包

java - 将架构名称添加到 Spring 数据中的实体?

mysql - Rails 统计记录而无需再次查询