すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:演算子

最終更新日:May 17, 2025

演算子は SQL 文の鍵となります。演算子を使用すると、複雑なデータの取得と処理のタスクを実行できます。これにより、より効率的なデータ処理、条件判断、またはその他の操作を実現できます。このトピックでは、MaxCompute でサポートされている演算子の形式と意味について説明します。また、これらの演算子の使用方法の例も示します。

次の表に、MaxCompute でサポートされている演算子の種類を示します。

演算子の種類

説明

関係演算子

比較演算に使用されます。

文字演算子

文字列の連結演算に使用されます。

算術演算子

算術演算に使用されます。

ビット演算子

2 進数の操作に使用されます。

論理演算子

複数の条件を接続するために使用されます。ほとんどの場合、論理演算子は BOOLEAN 型の式または値を接続するために使用されます。

関係演算子

演算子

説明

A=B

  • A または B が NULL の場合、NULL が返されます。

  • A が B と等しい場合、TRUE が返されます。それ以外の場合、FALSE が返されます。

A<=>B

  • A と B の両方が NULL の場合、TRUE が返されます。

  • A または B が NULL の場合、FALSE が返されます。

  • 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 がパターン B に一致する場合、TRUE が返されます。それ以外の場合、FALSE が返されます。

  • パーセント記号(%)は任意の数の文字に一致します。

  • アンダースコア(_)は 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 または正規表現 B に一致する場合、TRUE が返されます。それ以外の場合、FALSE が返されます。B が空の文字列の場合、エラーが返されます。A または B が NULL の場合、NULL が返されます。

説明

「A RLIKE B」は「A REGEXP B」と同じ効果があります。

A IN B

  • A が集合 B に含まれている場合、TRUE が返されます。それ以外の場合、FALSE が返されます。

  • A が NULL の場合、NULL が返されます。

  • 集合 B は定数集合でなければならず、少なくとも 1 つの要素を含んでいる必要があります。集合 B のすべての要素は同じデータ型でなければなりません。

BETWEEN AND

式は A [NOT] BETWEEN B AND C です。

  • A、B、または C が NULL の場合、NULL が返されます。

  • A が B 以上かつ C 以下の場合、TRUE が返されます。それ以外の場合、FALSE が返されます。

IS [NOT] DISTINCT FROM

式は A IS [NOT] DISTINCT FROM B です。

文における一般的な使用方法:

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%';

一部の関係演算を実行する前に、データ型を変換する必要があります。そうしないと、NULL が返される場合があります。データ型の変換の詳細については、「型の変換」をご参照ください。

MaxCompute の DOUBLE 型の値は精度が異なります。したがって、2 つの DOUBLE 型の値の比較に等号(=)を使用しないことをお勧めします。DOUBLE 型の値から別の 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 桁の精度を提供できます。

  • STRING 型の値と BIGINT 型の値を比較する場合、値のデータ型は自動的に DOUBLE に変換されます。比較中に精度の損失が発生する可能性があります。この問題に対処するには、CAST STRING AS BIGINT を使用して STRING 型を BIGINT に変換します。

文字演算子

演算子

説明

A||B

文字連結演算に使用されます。たとえば、a||b||c は CONCAT(a, b, c) と同等です。

算術演算子

演算子

説明

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 が返されます。

A DIV B

A または B が NULL の場合、NULL が返されます。それ以外の場合、A DIV B の結果が返されます。

文における一般的な使用方法:

SELECT age+10, age-10, age%10, -age, age*age, age/10, age div 10 FROM user;
説明
  • 算術演算では、STRING、BIGINT、DOUBLE、および TIMESTAMP_NTZ 型のパラメーター値のみを使用できます。日付値と BOOLEAN 型の値は算術演算で使用できません。TIMESTAMP_NTZ データ型の詳細については、「MaxCompute TIMESTAMP_NTZ データ型」をご参照ください。

  • STRING 型の値は、算術演算の前に暗黙的に DOUBLE 型に変換されます。

  • BIGINT 型と DOUBLE 型の値を使用して算術演算を実行する場合、演算の前に BIGINT 型の値は暗黙的に DOUBLE 型に変換されます。戻り値は DOUBLE 型です。

  • A と B が BIGINT 型の場合、A/B 演算を実行した後の戻り値は DOUBLE 型です。他の算術演算では、戻り値は BIGINT 型です。

ビット演算子

演算子

説明

  • BITAND

  • &

  • BITAND(A,B)

  • A&B

A と B のビット単位の AND 結果が返されます。たとえば、1&2 の結果は 0、BITAND(1,3) の結果は 1、NULL と任意の値のビット単位の AND 結果は NULL です。A と B は BIGINT 型でなければなりません。

  • BITOR

  • |

  • BITOR(A,B)

  • A|B

A と B のビット単位の OR 結果が返されます。たとえば、1|2 の結果は 3、BITOR(1,3) の結果は 3、NULL と任意の値のビット単位の OR 結果は NULL です。A と B は BIGINT 型でなければなりません。

  • BITNOT

  • ~

  • BITNOT(A)

  • ~A

A のビット単位の NOT 結果が返されます。たとえば、~1 の結果は -2、BITNOT(7) の結果は -8、NULL 値のビット単位の NOT 結果は NULL です。A は BIGINT 型でなければなりません。

  • BITXOR

  • ^

  • BITXOR(A,B)

  • A^B

A と B のビット単位の XOR 結果が返されます。たとえば、1^2 の結果は 3、BITXOR(4,5) の結果は 1、NULL と任意の値のビット単位の XOR 結果は NULL です。A と B は BIGINT 型でなければなりません。

説明

ビット演算子は暗黙の型変換をサポートしていません。ビット演算では BIGINT 型の値のみを使用できます。

論理演算子

演算子

説明

A and B

TRUE and TRUE=TRUE

TRUE and FALSE=FALSE

FALSE and TRUE=FALSE

FALSE and FALSE=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 FALSE=FALSE

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 が返されます。

説明

論理演算子は暗黙の型変換をサポートしていません。論理演算では BOOLEAN 型の値のみを使用できます。

演算子の優先順位

次の表に、演算子の優先順位を降順で示します。演算子の優先順位が同じ場合、デフォルトでは演算は左から右に実行されます。

演算子

優先順位

IS (NOT) NULL

1

^

2

*, /, %, DIV

3

+, -

4

||

5

&

6

|

7

(NOT) LIKE, (NOT) RLIKE, =, ==, IS (NOT) DISTINCT FROM, <>, !=, <=, <, >=, >

8

(NOT) IN, (NOT) BETWEEN AND

9

NOT

10

AND

11

OR

12

一部の演算を優先的に処理する場合、演算をかっこ()で囲む必要があります。例:

a=1 and b=1 or c=1        -- 最初に a=1 AND b=1 を計算し、次に OR 演算を実行します。
a=1 and (b=1 or c=1)      -- 最初に b=1 OR c=1 を計算し、次に AND 演算を実行します。