使用SQL查找字符串中单词的所有实例

时间:2014-05-01 20:27:40

标签: sql oracle oracle11g

我想在列中搜索字符串的所有实例

例如,如果我有一个值为all good all bad all better的列,我想找到all的实例数。

我试过

select instr(column, 'all') from test_table;

但只返回第一次出现all的位置。我正在使用Oracle 11g数据库。

有没有办法可以在Oracle db中找到特定字符串的所有实例?

3 个答案:

答案 0 :(得分:2)

SELECT REGEXP_COUNT(column, 'all') AS Cnt
FROM test_table;

答案 1 :(得分:2)

由于您使用的是11g,因此您可以使用regexp_count function。如果你想做一个区分大小写的计数

SELECT regexp_count( column, 'all' )
  FROM table_name

如果您想要不区分大小写的计数

SELECT regexp_count( column, 'all', 1, 'i' )
  FROM table_name

答案 2 :(得分:0)

这适用于MySQL - 未经过Oracle测试,但我认为没有理由不能使用它:

SELECT (LENGTH(column) - LENGTH(REPLACE(column, 'all', '')))/LENGTH('all') FROM table