Obtener las palabras más utilizadas de una columna de cadenas en SQL

Entonces tenemosesta base de datos lleno de un montón de cadenas, en este caso, títulos de publicaciones.

Lo que quiero hacer es:

Divide la cadena en palabrasCuenta cuántas veces aparecen las palabras en cadenasDame al top 50 palabrasNo tener este tiempo de espera en una consulta data.se

Traté de usar la información deesta pregunta SO adaptado a data.se de la siguiente manera:

select word, count(*) from (
select (case when instr(substr(p.Title, nums.n+1), ' ') then substr(p.Title, nums.n+1)
             else substr(p.Title, nums.n+1, instr(substr(p.Title, nums.n+1), ' ') - 1)
        end) as word
from (select ' '||Title as string
      from Posts p
     )Posts cross join
     (select 1 as n union all select 2 union all select 10
     ) nums
where substr(p.Title, nums.n, 1) = ' ' and substr(p.Title, nums.n, 1) <> ' '
) w
group by word
order by count(*) desc

Desafortunadamente, esto me da una serie de errores:

'substr' no es un nombre de función incorporado reconocido. Sintaxis incorrecta cerca de '|'. Sintaxis incorrecta cerca de 'nums'.

Entonces, dada una columna de cadenas en SQL con una cantidad variable de texto en cada cadena, ¿cómo puedo obtener una lista de las palabras X más utilizadas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta