在ORACLE中查找SQL查询,该查询返回特定列中使用的所有特殊字符的计数。假设在一列中有5行,每行使用两个特殊字符。我正在寻找一些给出10作为结果的查询。
我使用的是:
SELECT * FROM Customers WHERE REGEXP_LIKE(Employees, '[^]^A-Z^a-z^0-9^[^.^{^}^ ]' );
但它似乎无法正常工作。 在网上尝试了很多,但没有运气。
更新:寻找10g的解决方案
答案 0 :(得分:2)
这应该对你有用
with t as
(
select 'ar{un' name from dual
union
select 'a#;>' from dual
)
select sum(regexp_count(name,'[^[:alnum:]]')) from t;
对于10g我们可以使用它,因为regexp_count()在早期版本中不可用
with t as
(
select 'ar{un' name from dual
union
select 'a;<#' from dual
)
select count(distinct regexp_substr(name,'[^[:alnum:]]',level,1)) from t
connect by level <= LENGTH(regexp_replace(name,'[[:alnum:]]')) + 1;
Peach建议的10g另一种方法
with t as
(
select 'ar{}n' name from dual union
select 'a;<#' from dual
)
select sum(length(regexp_replace(name,'[[:alnum:]]'))) from t;