8

SQL の文字列に含まれる単語数を数えようとしています。

Select  ("Hello To Oracle") from dual;

単語数を表示したい。与えられた例では、単語間に複数のスペースが存在する可能性がありますが、3 つの単語になります。

4

4 に答える 4

16

これに似たものを使用できます。これは文字列の長さを取得し、スペースを削除して文字列の長さを引きます。次に、それに数字の1を追加すると、単語数が得られます。

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

デモで SQL Fiddle を参照してください

次のデータを使用する場合:

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 |
于 2012-12-23T04:12:59.880 に答える
8

Oracle 11gを使用しているので、さらに簡単です-

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

ここにsqlfiddleのデモがあります

于 2012-12-23T07:07:42.960 に答える
0

複数のスペースも削除する必要がある場合は、これを試してください。

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

テーブルを使用したので、dualこれを独自の開発環境で直接テストできます。

于 2012-12-23T05:17:18.847 に答える