演算子は、プログラムコードで演算を行うために使用します。 ここでは、関係演算子、算術演算子、ビット演算子、論理演算子の 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 文字と一致します。% または _ と一致させるには、エスケープ文字
'(%')' と (_') を使用します。
|
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 が返されます。
注 論理演算ではブール型のみ使用できます。暗黙の型変換には対応していません。