如何计算 SQL 或 PL/SQL 中字符串末尾的此字符的实例数?
Posted
技术标签:
【中文标题】如何计算 SQL 或 PL/SQL 中字符串末尾的此字符的实例数?【英文标题】:How can I count the number of instances of this character at the end of a string in SQL or PL/SQL? 【发布时间】:2013-08-04 10:15:54 【问题描述】:我有一个以一定数量的“=”字符结尾的字符串。它基本上是一个 base 64 字符串。
我如何才能得到最后的“=”字符数?最好使用内置的 SQL 函数或正则表达式。
我知道instr
函数,但它似乎不能在这里应用。我不确定正则表达式是否也适用于此。
【问题讨论】:
【参考方案1】:使用length
和replace
select length(some_column) - length(replace(some_column, '=', ''))
from your_table
【讨论】:
谢谢!最终使用 select nvl(length(replace('hello world==', rtrim('hello world==', '='), '')), 0) padding from dual【参考方案2】:SELECT REGEXP_COUNT('hello world==', '=') cnt FROM dual
/
SELECT count(distinct(Instr('hello world==','=', LEVEL))) cnt
FROM dual
CONNECT BY LEVEL <= Length('hello world==')
ORDER BY 1
/
【讨论】:
第一行计算所有的 '=' 而不仅仅是最后的那些,例如regexp_count('==Hello world ==','=') 返回 4。OP 想要最后的字符数。以上是关于如何计算 SQL 或 PL/SQL 中字符串末尾的此字符的实例数?的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式 substr,起始位置位于字符串 PL/SQL 的末尾
去掉 PL/SQL 函数末尾的逗号 [Oracle PL/SQL]
如何在 SQL 或 PL/SQL 中查找给定字符串(列数据)中的第 5 个字符? [关闭]