0
A
回答
0
创建一个表
create table charcount (c char(1))
分割字符串成单个字符,并将其插入到使用PL/SQL此表。答案是那么第一行的:
select c, count(1)
from charcount
group by c
order by count(1) desc
2
也许不是完美的优雅,但仍然工作:
declare
str varchar2(6 char) := 'abcdea';
alphabet varchar2(26 char) := 'abcdefghijklmnopqrstuvwxyz';
most_frequent char := '';
max_count INTEGER := 0;
v_count INTEGER := 0;
checking CHAR := '';
begin
for i in 1..26 loop
checking := SUBSTR(alphabet, i, 1);
for k in 1..length(str)
loop
if SUBSTR(str, k, 1) = checking THEN
v_count := v_count + 1;
end if;
end loop;
if v_count > max_count THEN
max_count := v_count;
most_frequent := checking;
end if;
v_count :=0;
end loop;
dbms_output.put_line('Most frequent letter is "'|| most_frequent||'"');
end;
+0
+1 - 我喜欢这个解决方案。 @cc - 请注意,上述解决方案仅适用于小写字符串。使用“如果SUBSTR(LOWER(str),k,1)=检查THEN”来执行不区分大小写的搜索。 – darreljnz 2009-10-20 09:18:19
0
下面是使用一对夫妇SYS类型的解决方案:
declare
str varchar2(6) := 'abcdea';
tab AWRDRPT_TEXT_TYPE_TABLE := AWRDRPT_TEXT_TYPE_TABLE();
begin
for i in 1..length(str) loop
tab.extend(1);
tab(i) := AWRDRPT_TEXT_TYPE (substr(str,i,1));
end loop;
for r in (select output, count(*) as cnt
from table(tab)
group by output
order by cnt desc)
loop
dbms_output.put_line(r.output);
exit;
end loop;
end;
2
的关联数组非常方便地存储计数:
DECLARE
TYPE t_counts IS TABLE OF PLS_INTEGER INDEX BY VARCHAR2(1);
--
v_counts t_counts;
v_string VARCHAR2(100) := 'the quick brown fox jumped over the lazy dog';
v_char VARCHAR2(1);
BEGIN
FOR i IN 1 .. length(v_string) LOOP
v_char := substr(v_string, i, 1);
IF NOT v_counts.exists(v_char) THEN
v_counts(v_char) := 0;
END IF;
v_counts(v_char) := v_counts(v_char) + 1;
END LOOP;
END;
/
寻找具有最高计数的数组中的索引将是微不足道的添加
0
有可能不PL/SQL纯SQL
declare
l_string varchar2(1000) := 'asddafsbaterbtretbbfdsbgdfsgnrtynrthfhfghntumfyuy';
l_char char(1);
begin
with t as
(select l_string as str from dual)
select c
into l_char
from (select substr(str, level, 1) as c, count(*) as cnt
from t
connect by level <= length(str)
group by substr(str, level, 1)
order by 2 desc)
where rownum < 2;
dbms_output.put_line('Most used char is ' || l_char);
exception
when no_data_found then
dbms_output.put_line('Sorry string is empty');
end;
相关问题
- 1. 使用LIKE向后PLSQL搜索字符串
- 2. plsql oracle防止在字符串的第二个字符中使用特殊字符
- 3. 如果使用regexep_like循环验证在plsql中使用下划线的字母数字字符串?
- 4. 从java到plsql的单字符字符串varchar2(1)导致'字符串缓冲区太小'
- 5. 使用字符串
- 6. 使用字符串
- 7. 使用字符串
- 8. Oracle数据库连接字符串PLSQL兼容性
- 9. oracle plsql将一个变量连接到一个字符串
- 10. PLSQL字符串转换为日期时间
- 11. 在PLSQL中提取URL路径段字符串
- 12. PLSQL中的IF语句中的条件字符串
- 13. 如何将htf.escape_sc字符串转换为plsql中的html?
- 14. 如何通过字符串值作为参数PLSQL过程
- 15. 使用多字符字符串的拆分字符串
- 16. 调用使用字符串
- 17. 使用字符对比字符串
- 18. PLSQL代码来替换字符
- 19. PLSQL - 将字符数组转换为Varchar2
- 20. 如何使用字符串分隔符分割字符串?
- 21. 使用字符串作为分隔符来拆分字符串
- 22. 使用File.WriteAllText时没有换行符(字符串,字符串)
- 23. 想要使用字符串来UIImage(名字:字符串).center
- 24. 如何在字符串文字中使用字符串插值?
- 25. 使用-notcontains查找字符串内的字符串中的子字符串
- 26. 用字符串替换字符串使用string.replace()
- 27. 呼叫使用字符串
- 28. 使用长字符串
- 29. 使用字符串可变
- 30. 使用字符串或流?
这是PL/SQL的一个不寻常的任务 - 我可能会问为什么你在数据库上做这个吗? – Kobi 2009-10-19 08:50:42