PL/SQLで使える演算子まとめ


ここではORACLE社が提供するPL/SQL言語で使える演算子まとめて紹介しています。

PL/SQLで使える演算子の一覧

PL/SQLで使える主な演算子の一覧は次の通りです。

具体的な使い方は下記にてサンプルを紹介しています。

なおPL/SQLには3項演算子は無いようです。

記号内容
:=代入演算子
=>結合演算子
||連結演算子
+加算演算子
減算演算子
*乗算演算子
/除算演算子
=比較演算子(等号・等しい)
<>,!=,~=,^=比較演算子(不等号・等しくない)
<比較演算子(~より小さい)
>比較演算子(~より大きい)
<=比較演算子(~以下)
>=比較演算子(~以上)
AND論理演算子(かつ)
OR論理演算子(または)
NOT論理演算子(否定)

PL/SQLで使える演算子の例

代入演算子

変数 := 値や文字列
DECLARE
    msg VARCHAR2(30);
BEGIN
    msg := 'Hello World';
    DBMS_OUTPUT.PUT_LINE(msg);
END;
Hello World
PL/SQLが実行されました(51 msec.)

結合演算子

結合演算子はプログラムを呼び出すときの引数を指定するのに使います。

例えば次のような複数の引数のあるファンクションを用意します。

CREATE OR REPLACE FUNCTION func1(p1 NUMBER,p2 NUMBER)
RETURN varchar2 IS
BEGIN
    IF p1*5 = p2 THEN
         RETURN '〇';
    END IF;
    RETURN '×';
END;

このファンクションを呼び出す時に順番を指定しなかった場合は、次のケースではp1に5が、p2に1が引き渡されます。

順番を指定しない場合は、引数として書いた値の順番で渡されるからです。

BEGIN
    DBMS_OUTPUT.PUT_LINE(func1(5,1));
END; 
×
PL/SQLが実行されました(6 msec.)

代入演算子を使うことで、明示的にどの値をどの引数に渡すか指定することが出来ます。

次のケースではp2に5を、p1に1を設定しています。このように順不同で引数に値を指定することが出来ます。

BEGIN
    DBMS_OUTPUT.PUT_LINE(func1(p2=>5,p1=>1));
END; 
〇
PL/SQLが実行されました(6 msec.)

連結演算子

文字列 || 文字列
DECLARE
    msg VARCHAR2(30);
BEGIN
    msg := 'Hello' || 'World';
    DBMS_OUTPUT.PUT_LINE(msg);
END;
HelloWorld
PL/SQLが実行されました(140 msec.)

加算演算子

値 + 値
DECLARE
    num NUMBER;
BEGIN
    num := 1 + 1;
    DBMS_OUTPUT.PUT_LINE(num);
END;
2
PL/SQLが実行されました(21 msec.)

減算演算子

値 - 値
DECLARE
    num NUMBER;
BEGIN
    num := 1 - 5;
    DBMS_OUTPUT.PUT_LINE(num);
END;
-4
PL/SQLが実行されました(6 msec.)

乗算演算子

値 * 値
DECLARE
    num NUMBER;
BEGIN
    num := 5 * 5;
    DBMS_OUTPUT.PUT_LINE(num);
END;
25
PL/SQLが実行されました(22 msec.)

除算演算子

値 / 値
DECLARE
    num NUMBER;
BEGIN
    num := 25 / 5;
    DBMS_OUTPUT.PUT_LINE(num);
END;
5
PL/SQLが実行されました(6 msec.)

比較演算子(等号・等しい)

式(値・文字列)= 式(値・文字列)
DECLARE
    num NUMBER;
BEGIN
    IF 1 = 1 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(6 msec.)

比較演算子(不等号・等しくない)

式(値・文字列)<> 式(値・文字列)
DECLARE
    num NUMBER;
BEGIN
    IF 1 <> 1 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
×
PL/SQLが実行されました(21 msec.)

比較演算子(~より小さい)

値1が値2より小さいときにTRUE、それ以外はFALSE。

値1 < 値2
DECLARE
    num NUMBER;
BEGIN
    IF 1 < 2 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(6 msec.)

比較演算子(~より大きい)

値1が値2より大きいときにTRUE、それ以外はFALSE。

値1 > 値2
DECLARE
    num NUMBER;
BEGIN
    IF 2 > 1 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(7 msec.)

比較演算子(~以下)

値1が値2より小さい、もしくは値1と値2が等しいときにTRUE、それ以外はFALSEになります。

値1 <= 値2
DECLARE
    num NUMBER;
BEGIN
    IF 2 <= 2 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(9 msec.)

比較演算子(~以上)

値1が値2より大きい、もしくは値1と値2が等しいときにTRUE、それ以外はFALSEになります。

値1 >= 値2
DECLARE
    num NUMBER;
BEGIN
    IF 2 >= 2 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(6 msec.)

論理演算子(かつ)

式1と式2の結果が共にTRUEの場合、TRUEになります。それ以外はFALSEになります。

式1 AND 式2
DECLARE
    num NUMBER;
BEGIN
    IF 1 = 1 AND 2 = 2 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(7 msec.)

論理演算子(または)

式1と式2の結果のいずれかがTRUEの場合、TRUEになります。それ以外はFALSEになります。

式1 OR 式2DECLARE
    num NUMBER;
BEGIN
    IF 1 = 3 OR 2 = 2 THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
〇
PL/SQLが実行されました(129 msec.)

論理演算子(否定)

式の結果を反転させます。式の結果がTRUEの場合はFALSEを、結果がFALSEの場合はTRUEを返します。

NOT(式)
DECLARE
    num NUMBER;
BEGIN
    IF NOT(1 = 1) THEN
        DBMS_OUTPUT.PUT_LINE('〇');
    ELSE
        DBMS_OUTPUT.PUT_LINE('×');
    END IF;
END;
×
PL/SQLが実行されました(7 msec.)