演算子は、プログラムコードで演算を行うために使用します。 ここでは、関係演算子、算術演算子、ビット演算子、論理演算子の 4 種類の演算子について説明します。

関係演算子

演算子 説明
A=B A または B が NULL の場合は NULL が返されます。 A と B が等しい場合は TRUE、そうでない場合は FALSE が返されます。
A<>B A または B が NULL の場合は NULL が返されます。 A と B が等しくない場合は TRUE 、そうでない場合は FALSE が返されます。
A<B A または B が NULL の場合は NULL が返されます。 A が B より小さい場合は TRUE、そうでない場合は FALSE が返されます。
A<=B A または B が NULL の場合は NULL が返されます。 A が B 以下の場合は TRUE、そうでない場合は FALSE が返されます。
A>B A または B が NULL の場合は NULL が返されます。 A が B より大きい場合は TRUE、そうでない場合は FALSE が返されます。
A>=B A または B が NULL の場合は NULL が返されます。A が B 以上の場合は TRUE、そうでない場合は FALSE が返されます。
A IS NULL A が NULL の場合は TRUE が返されます。そうでない場合は、FALSE が返されます。
A IS NOT NULL A が NULL でない場合、TRUE が返されます。そうでない場合は、FALSE が返されます。
A LIKE B A または B が NULL の場合は、NULL が返されます。 文字列 A が SQL の単純正規表現 B と一致する場合は TRUE、そうでない場合は FALSE が返されます。 B 内の文字列 % は、A 内の任意の数の文字列と一致します。B 内の文字列 _ は、A 内の任意の 1 文字と一致します。% または _ と一致させるには、エスケープ文字 '(%')' と (_') を使用します。
‘aaa’ like‘a_’= TRUE 
‘aaa’ like‘a%’ = TRUE
‘aaa’ like‘aab’= FALSE 
‘a%b’ like‘a\\%b’= TRUE 
‘axb’ like ‘a\\%b’= FALSE               
A RLIKE B A は文字列で、B は文字列定数の正規表現です。 A の部分文字列が Java の正規表現の B と一致する場合は TRUE、そうでない場合は FALSE が返されます。 式 B が空の場合、エラーを報告して終了します。 A または B が NULL の場合は、NULL が返されます。
A IN B B は集合です。 A が NULL の場合は、NULL が返されます。 A が B の中にある場合、TRUE が返されます。そうでない場合は FALSE が返されます。 式 B に 1 つの要素 NULL だけがある場合、つまり A IN (NULL) の場合は NULL が返されます。 式 B に NULL 要素が含まれている場合は、B 集合の他の要素の型として NULL をとります。 B は定数でなければならず、少なくとも 1 つの要素を持つ必要があります。すべての型は一致していなければなりません。
BETWEEN AND A [NOT] BETWEEN B AND C の式で、A、B、C のいずれかが Empty の場合、Empty が返されます。 A が B 以上 C 以下の場合は TRUE、そうでない場合は FALSE が返されます。
一般的な使用方法
select * from user where user_id = '0001'; 
select * from user where user_name <> 'maggie'; 
select * from user where age > ‘50’; 
select * from user where birth_day >= '1980-01-01 00:00:00'; 
select * from user where is_female is null; 
select * from user where is_female is not null; 
select * from user where user_id in (0001,0010); 
select * from user where user_name like 'M%';

MaxCompute では、Double 値の精度が異なります。 このため、2 つの Double 型のデータの比較に等号 (=) を使用することは推奨しません。 2 つの Double 型を引き算し、絶対値から判断できます。 絶対値が非常に小さい場合、2 つの double 値は等しいとみなされます。

abs(0.9999999999 - 1.0000000000) < 0.000000001
 -- 0.9999999999  と 1.0000000000 は、小数点以下 10 桁の精度ですが、0.000000001 は小数点以下 9 桁の精度です。
 -- 0.9999999999 は 1.0000000000 と等しいとみなされます。
  • ABS は、絶対値をとるための MaxCompute 組み込み関数です。 詳細は、「ABS」をご参照ください。
  • 一般的に、MaxCompute の double 型は 14 桁の数字を保持できます。

算術演算子

演算子 説明
A + B 式 A または B が NULL の場合は NULL が返されます。そうでない場合は、A と B を足した結果が返されます。
A – B 式 A または B が NULLの場合は NULL が返されます。そうでない場合は、A からB を引いた結果が返されます。
A * B 式 A または B が NULL の場合は NULL が返されます。そうでない場合は、A と B を掛けた結果が返されます。
A / B 式 A または B が NULL の場合は NULL が返されます。そうでない場合は、A を B で割った結果が返されます。 式 A と B が bigint 型の場合、結果は double 型になります。
A % B 式 A または B が NULL の場合は NULL が返されます。そうでない場合は、A を B で割った余りが返されます。
+A A が返されます。
-A 式 A が NULL の場合は NULL が返されます。そうでない場合は -A が返されます。
一般的な使用方法
select age+10, age-10, age%10, -age, age*age, age/10 from user;
  • 算術演算では string、bigint、double 型のみ使用可能です。 日付型とブール型は使用できません。
  • 算術演算の前に、string 型は暗黙の型変換によって double 型に変換されます。
  • bigint 型と double 型がどちらも算術演算に含まれている場合、bigint 型は暗黙の型変換によって double 型に変換されます。
  • A と B が bigint 型の場合、A/B の戻り値は double 型になります。 他の算術演算では、戻り値も bigint 型です。

ビット演算子

演算子 説明
A & B A と B のビット積の結果が返されます。たとえば、1&2は 0、1&3は 1、NULL とその他の値のビット積はすべて NULL が返されます。 式 A と B は bigint 型でなければなりません。
A | B A と B のビット和の結果が返されます。たとえば、1 | 2 は 3、1 | 3 は 3 が返されます。 NULL とその他の値のビット和はすべて NULL が返されます。 式 A と B は Bigint 型でなければなりません。
ビット演算子は暗黙の型変換に対応しておらず、bigint 型のみを使用できます。

論理演算子

    演算子 説明
    A and B TRUE and TRUE=TRUE
                    TRUE and FALSE=FALSE
                    FALSE and TRUE=FALSE
                    FALSE and NULL=FALSE
                    NULL and FALSE=FALSE
                    TRUE and NULL=NULL
                    NULL and TRUE=NULL
                    NULL and NULL=NULL
    A or B TRUE or TRUE=TRUE
                    TRUE or FALSE=TRUE
                    FALSE or TRUE=TRUE
                    FALSE or NULL=NULL
                    NULL or FALSE=NULL
                    TRUE or NULL=TRUE
                    NULL or TRUE=TRUE
                    NULL or NULL=NULL
    NOT A A が NULL の場合、NULL が返されます。
                    A  が TRUE の場合、FALSE が返されます。
                    A が FALSE の場合、TRUE が返されます。
論理演算ではブール型のみ使用できます。暗黙の型変換には対応していません。