separada por partes ocurrencias instr funciones funcion extraer contar comas caracteres caracter cadena buscar sql oracle oracle11g

sql - por - ¿Cómo puedo contar la cantidad de palabras en una cadena en Oracle?



funciones de cadena sql oracle (4)

Puedes usar algo similar a esto. Esto obtiene la longitud de la cadena, luego substrae la longitud de la cadena con los espacios eliminados. Al agregar el número uno, debería darle la cantidad de palabras:

Select length(yourCol) - length(replace(yourcol, '' '', '''')) + 1 NumbofWords from yourtable

Ver SQL Fiddle con demostración

Si usa los siguientes datos:

CREATE TABLE yourtable (yourCol varchar2(15)) ; INSERT ALL INTO yourtable (yourCol) VALUES (''Hello To Oracle'') INTO yourtable (yourCol) VALUES (''oneword'') INTO yourtable (yourCol) VALUES (''two words'') SELECT * FROM dual ;

Y la consulta:

Select yourcol, length(yourCol) - length(replace(yourcol, '' '', '''')) + 1 NumbofWords from yourtable

El resultado es:

| YOURCOL | NUMBOFWORDS | --------------------------------- | Hello To Oracle | 3 | | oneword | 1 | | two words | 2 |

Estoy tratando de contar cuántas palabras hay en una cadena en SQL.

Select ("Hello To Oracle") from dual;

Quiero mostrar el número de palabras. En el ejemplo dado, serían 3 palabras, aunque podría haber más de un espacio entre las palabras.


Si su requisito es eliminar múltiples espacios también, intente esto:

Select length(''500 text Oracle Parkway Redwood Shores CA'') - length(REGEXP_REPLACE(''500 text Oracle Parkway Redwood Shores CA'', ''( ){1,}'', '''')) NumbofWords from dual;

Como utilicé la tabla dual , puede probar esto directamente en su propio entorno de desarrollo.



DECLARE @List NVARCHAR(MAX) = '' ab a x''; /*Your column/Param*/ DECLARE @Delimiter NVARCHAR(255) = '' '';/*space*/ DECLARE @WordsTable TABLE (Data VARCHAR(1000)); /*convert by XML the string to table*/ INSERT INTO @WordsTable(Data) SELECT Data = y.i.value(''(./text())[1]'', ''VARCHAR(1000)'') FROM ( SELECT x = CONVERT(XML, ''<i>'' + REPLACE(@List, @Delimiter, ''</i><i>'') + ''</i>'').query(''.'') ) AS a CROSS APPLY x.nodes(''i'') AS y(i) /*Your total words*/ select count(*) NumberOfWords from @WordsTable where Data is not null; /*words list*/ select * from @WordsTable where Data is not null

/ de esta Lógica puedes continuar alon /