programing

Oracle에서 문자열의 단어 수를 계산하려면 어떻게 해야 합니까?

muds 2023. 10. 28. 08:18
반응형

Oracle에서 문자열의 단어 수를 계산하려면 어떻게 해야 합니까?

SQL에 있는 문자열에 몇 개의 단어가 있는지 세어 보려고 합니다.

Select  ("Hello To Oracle") from dual;

단어의 개수를 보여주고 싶습니다.주어진 예에서 단어 사이에 하나 이상의 공백이 있을 수 있지만 3개의 단어가 될 것입니다.

이것과 비슷한 것을 사용할 수 있습니다.이것은 문자열의 길이를 얻은 다음 공백을 제거한 상태에서 문자열의 길이를 풉니다.그 다음에 숫자 1을 더하면 단어 수를 알 수 있습니다.

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

SQL Fiddle with Demo 참조

다음 데이터를 사용할 경우:

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
;

그리고 질문은:

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

결과는 다음과 같습니다.

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

Oracle 11g를 사용하기 때문에 더욱 간단합니다.

select regexp_count(your_column, '[^ ]+') from your_table

여기 sqlfiddle 데모가 있습니다.

여러 개의 공간도 제거해야 하는 경우 다음을 수행해 보십시오.

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

제가 사용을 해보니까.dual테이블 당신은 당신 자신의 개발 환경에서 이것을 직접 테스트 할 수 있습니다.

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

/이 로직에서 단독으로 계속할 수 있습니다.

언급URL : https://stackoverflow.com/questions/14008509/how-can-i-count-the-number-of-words-in-a-string-in-oracle

반응형