PL / SQL-文字列
PL / SQLの文字列は、実際にはオプションのサイズ指定を持つ文字のシーケンスです。文字は、数字、文字、空白、特殊文字、またはすべての組み合わせにすることができます。PL / SQLは3種類の文字列を提供します-
Fixed-length strings−このような文字列では、プログラマは文字列を宣言するときに長さを指定します。文字列には、指定された長さのスペースが右に埋め込まれます。
Variable-length strings −このようなストリングでは、ストリングの最大長が最大32,767に指定されており、パディングは行われません。
Character large objects (CLOBs) −これらは、最大128テラバイトの可変長文字列です。
PL / SQL文字列は、変数またはリテラルのいずれかです。文字列リテラルは引用符で囲まれています。例えば、
'This is a string literal.' Or 'hello world'
文字列リテラル内に一重引用符を含めるには、2つの一重引用符を並べて入力する必要があります。例えば、
'this isn''t what it looks like'
文字列変数の宣言
Oracleデータベースは、CHAR、NCHAR、VARCHAR2、NVARCHAR2、CLOB、NCLOBなどの多数の文字列データ型を提供します。接頭辞が付いたデータ型'N' です 'national character set' Unicode文字データを格納するデータ型。
可変長文字列を宣言する必要がある場合は、その文字列の最大長を指定する必要があります。たとえば、VARCHAR2データ型。次の例は、いくつかの文字列変数の宣言と使用を示しています。
DECLARE
name varchar2(20);
company varchar2(30);
introduction clob;
choice char(1);
BEGIN
name := 'John Smith';
company := 'Infotech';
introduction := ' Hello! I''m John Smith from Infotech.';
choice := 'y';
IF choice = 'y' THEN
dbms_output.put_line(name);
dbms_output.put_line(company);
dbms_output.put_line(introduction);
END IF;
END;
/
上記のコードをSQLプロンプトで実行すると、次の結果が生成されます。
John Smith
Infotech
Hello! I'm John Smith from Infotech.
PL/SQL procedure successfully completed
固定長文字列を宣言するには、CHARデータ型を使用します。ここでは、固定長変数の最大長を指定する必要はありません。長さの制約を省略した場合、OracleDatabaseは必要な最大長を自動的に使用します。次の2つの宣言は同一です-
red_flag CHAR(1) := 'Y';
red_flag CHAR := 'Y';
PL / SQL文字列関数と演算子
PL / SQLは連結演算子を提供します (||)2つの文字列を結合するため。次の表に、PL / SQLが提供する文字列関数を示します。
S.No | 機能と目的 |
---|---|
1 | ASCII(x); 文字xのASCII値を返します。 |
2 | CHR(x); ASCII値がxの文字を返します。 |
3 | CONCAT(x, y); 文字列xとyを連結し、追加された文字列を返します。 |
4 | INITCAP(x); xの各単語の頭文字を大文字に変換し、その文字列を返します。 |
5 | INSTR(x, find_string [, start] [, occurrence]); を検索します find_string xで、それが発生する位置を返します。 |
6 | INSTRB(x); 別の文字列内の文字列の場所を返しますが、値をバイト単位で返します。 |
7 | LENGTH(x); xの文字数を返します。 |
8 | LENGTHB(x); 1バイト文字セットの文字列の長さをバイト単位で返します。 |
9 | LOWER(x); xの文字を小文字に変換し、その文字列を返します。 |
10 | LPAD(x, width [, pad_string]) ; パッド x 左側にスペースを入れて、文字列の全長を幅文字までにします。 |
11 | LTRIM(x [, trim_string]); 左から文字をトリミングします x。 |
12 | NANVL(x, value); xがNaNの特別な値(数値ではない)と一致する場合は値を返し、そうでない場合は値を返します x が返されます。 |
13 | NLS_INITCAP(x); NLSSORTで指定された別のソート方法を使用できることを除いて、INITCAP関数と同じです。 |
14 | NLS_LOWER(x) ; NLSSORTで指定された別のソート方法を使用できることを除いて、LOWER関数と同じです。 |
15 | NLS_UPPER(x); NLSSORTで指定されている別のソート方法を使用できることを除いて、UPPER関数と同じです。 |
16 | NLSSORT(x); 文字の並べ替え方法を変更します。NLS関数の前に指定する必要があります。それ以外の場合は、デフォルトのソートが使用されます。 |
17 | NVL(x, value); 次の場合に値を返します x無効である; それ以外の場合は、xが返されます。 |
18 | NVL2(x, value1, value2); xがnullでない場合、value1を返します。xがnullの場合、value2が返されます。 |
19 | REPLACE(x, search_string, replace_string); 検索 x search_stringの場合、replace_stringに置き換えます。 |
20 | RPAD(x, width [, pad_string]); パッド x 右の方へ。 |
21 | RTRIM(x [, trim_string]); トリム x 右から。 |
22 | SOUNDEX(x) ; の音声表現を含む文字列を返します x。 |
23 | SUBSTR(x, start [, length]); の部分文字列を返します xこれは、startで指定された位置から始まります。部分文字列のオプションの長さを指定できます。 |
24 | SUBSTRB(x); パラメータがシングルバイト文字システムの文字ではなくバイトで表されることを除いて、SUBSTRと同じです。 |
25 | TRIM([trim_char FROM) x); の左右から文字をトリミングします x。 |
26 | UPPER(x); xの文字を大文字に変換し、その文字列を返します。 |
概念を理解するために、いくつかの例を考えてみましょう。
例1
DECLARE
greetings varchar2(11) := 'hello world';
BEGIN
dbms_output.put_line(UPPER(greetings));
dbms_output.put_line(LOWER(greetings));
dbms_output.put_line(INITCAP(greetings));
/* retrieve the first character in the string */
dbms_output.put_line ( SUBSTR (greetings, 1, 1));
/* retrieve the last character in the string */
dbms_output.put_line ( SUBSTR (greetings, -1, 1));
/* retrieve five characters,
starting from the seventh position. */
dbms_output.put_line ( SUBSTR (greetings, 7, 5));
/* retrieve the remainder of the string,
starting from the second position. */
dbms_output.put_line ( SUBSTR (greetings, 2));
/* find the location of the first "e" */
dbms_output.put_line ( INSTR (greetings, 'e'));
END;
/
上記のコードをSQLプロンプトで実行すると、次の結果が生成されます。
HELLO WORLD
hello world
Hello World
h
d
World
ello World
2
PL/SQL procedure successfully completed.
例2
DECLARE
greetings varchar2(30) := '......Hello World.....';
BEGIN
dbms_output.put_line(RTRIM(greetings,'.'));
dbms_output.put_line(LTRIM(greetings, '.'));
dbms_output.put_line(TRIM( '.' from greetings));
END;
/
上記のコードをSQLプロンプトで実行すると、次の結果が生成されます。
......Hello World
Hello World.....
Hello World
PL/SQL procedure successfully completed.