PL/SQLで文字列内の文字数と単語数をカウントする方法
任意の長さの文字列が与えられたとき、PL/SQLを使ってその文字列に含まれる文字数と単語数を求める方法を解説します。
PL/SQLとは、SQLにプログラミング言語の手続き的な機能を組み合わせた拡張言語です。1990年代前半にOracle Corporation(オラクル社)によって、SQLの機能を強化する目的で開発されました。PL/SQLは、SQL本体やJavaとともに、Oracle Databaseに組み込まれている3つの主要プログラミング言語のひとつです。
PL/SQLブロックでは、プログラム内で使用する変数を宣言するための「DECLARE」ブロックと、実際の処理ロジックを記述するための「BEGIN」ブロックを使用します。
実行例
入力:string str = "Tutorials Point" 出力:文字数は 15 単語数は 2
解説:この文字列には合計2つの単語が含まれているため、単語数は2です。また、単語を構成する文字が14個と、文字列内のスペース1つを合わせた15が文字数となります。
入力:string str = "Honesty is the best policy" 出力:文字数は 26 単語数は 5
解説:この文字列には合計5つの単語が含まれているため、単語数は5です。また、単語を構成する文字が24個と、文字列内のスペース4つを合わせた26が文字数となります。
プログラムの考え方
- 任意の長さの文字列を入力として受け取り、変数(ここでは str)に格納します。
length()関数を使って文字列の長さを取得します。この関数は、スペースも含めた文字列全体の文字数を整数値として返します。- 変数 i を 1 から文字列 str の長さまで順に進めながらループ処理を行います。
substr()関数を使って文字列から1文字ずつ取り出し、スペースの出現回数から単語数を判定します。- ループが1回回るごとに文字数のカウントを1ずつ増やしていきます。ループは文字列の長さ分だけ繰り返されます。
- 最後に、文字数と単語数のカウント結果を出力します。
サンプルコード
DECLARE
str VARCHAR2(40) := 'Tutorials Point';
nchars NUMBER(4) := 0;
nwords NUMBER(4) := 1;
s CHAR;
BEGIN
FOR i IN 1..Length(str) LOOP
s := Substr(str, i, 1);
nchars := nchars + 1;
IF s = ' ' THEN
nwords := nwords + 1;
END IF;
END LOOP;
dbms_output.Put_line('count of characters is:'
|| nchars);
dbms_output.Put_line('Count of words are: '
|| nwords);
END;コードのポイント
- 変数
nwordsの初期値を「1」にしているのは、単語数=スペースの数+1 という関係を利用するためです。 - ループ内で
Substr(str, i, 1)を使うことで、文字列から位置 i の1文字を取り出しています。 - 取り出した文字がスペース(' ')と一致した場合にのみ、単語数をインクリメントします。
出力結果
上記のコードを実行すると、次のような出力が得られます。
count of characters is: 15 Count of words are: 2
このように、PL/SQLの基本的なループ処理と文字列関数を組み合わせるだけで、文字列内の文字数や単語数を簡単にカウントすることができます。なお、この手法では連続したスペースや先頭・末尾の余分なスペースがある場合、正確な単語数を得られない点に注意してください。より厳密に扱いたい場合は、事前にトリミング処理を加えるか、正規表現関数(REGEXP_COUNTなど)の利用も検討するとよいでしょう。
-
SQL・T-SQL・MSSQL・PL/SQL・MySQLとは?それぞれの違いと使い分けを徹底解説
私たちが日頃目にする動的なWebサイトの多くは、コンテンツをデータベースで管理しているからこそ実現しています。そして、データベースを効率的に管理するには、体系的な仕組みが必要です。その中核を担っているのがSQLです。 SQLは「Structured Query Language(構造化問い合わせ言語)」の略で、リレーショナルデータベース管理システム(RDBMS)に格納されたデータへアクセスし、管理するために使われる言語です。1986年には米国規格協会(ANSI)の標準規格となり、わずか1年後の1987年には国際標準化機構(ISO)の標準にも採用されました。 SQL Server上では、SQ
-
C#で指定した文字列内の単語数をカウントするプログラムの書き方
文字列内の単語数をカウントする基本の考え方C#では、文字列に含まれる単語の数を数えるために、文字列を先頭から1文字ずつ走査し、区切り文字(スペース・改行・タブ)が見つかるたびにカウントを増やすという手法が使えます。例として、次の文字列に含まれる単語数を数えてみましょう。str1 = Hello World!;この場合、文字列の長さ分だけループ処理を行い、スペース( )、改行(\n)、タブ(\t)のいずれかが見つかったタイミングでカウント変数をインクリメントします。if(str1[a]== || str1[a]==\n || str1[a]==\t) { count++; }サンプルコ