ブール値(boolean)に対する演算子として、and、or、notが使えます。 SQLとは違い、nullというブール値はありません。
演算 | 結果 |
---|---|
true and true | true |
true and false | false |
true or true | true |
true or false | true |
not true | false |
not false | true |
andの方がorよりも優先されます。例えば、true or false and falseの結果は、
trueになります。
true or (false and false) -> true or false -> true
となるためです。
()を使って、優先順位を変えることができます。
(true or false) and false -> true and false -> false
aaa or bbbの場合、aaaがtrueならbbbは評価されずに結果はtrueになります。
また、aaa and bbbの場合、aaaがfalseならbbbは評価されずに結果はfalseになります。
x 比較演算子 y の構文で使える以下の演算子があります。
演算子 | 説明 |
---|---|
< | 小なり |
lt | 小なり |
> | 大なり |
gt | 大なり |
<= | 以下 |
le | 以下 |
>= | 以上 |
ge | 以上 |
= | 等しい |
eq | 等しい |
!= | 等しくない |
ne | 等しくない |
<> | 等しくない |
< >をXMLに記述する場合は、< >のように記述します。
間違えやすいので、lt,gt,le,geの比較演算子を使った方がいいでしょう。
nullがある場合、以下のようになります。
<,>,<=,>=は、x,yどちらかにnullがあると結果はfalseになります。
=は、x,yどちらもnullあるいは、x,yどちらもnullではなくて等しい場合に、trueになります。
!=,<>は、x,yどちらもnullの場合はfalse、x,yどちらかがnullの場合は、trueになります。
x is null x is not null標準的なSQLとは異なり、次の構文も同じ意味になります。
x = null x != null
Nazunaには、以下の算術演算子があります。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
+ | 和 | 1 + 2 | 3 |
- | 差 | 1 - 2 | -1 |
* | 積 | 2 * 3 | 6 |
/ | 商 ※1 | 4 / 2 | 2 |
% | 余り | 5 / 2 | 1 |
Flowletには、以下の算術関数があります。
関数 | 戻り値の型 | 説明 | 例 | 結果 |
---|---|---|---|---|
abs(Integer) | Integer | 絶対値 | abs(-1) | 1 |
abs(Long) | Long | 絶対値 | abs(-10000000000) | 10000000000 |
abs(BigDecimal) | BigDecimal | 絶対値 | abs(-1.0) | 1.0 |
ceil(BigDecimal) | BigDecimal | 引数より小さくない最小の整数 | ceil(-1.5) | -1.0 |
degrees(BigDecimal) | BigDecimal | 度に対応するラジアン | degrees(0.5) | 28.6478897565412 |
exp(BigDecimal) | BigDecimal | 指数 | exp(1.0) | 2.71828182845905 |
floor(BigDecimal) | BigDecimal | 引数より大きくない最大の整数 | floor(-42.8) | -43 |
ln(BigDecimal) | BigDecimal | 自然対数 | ln(2.0) | 0.693147180559945 |
pow(BigDecimal base, BigDecimal e) | BigDecimal | baseのe乗 | pow(9.0, 3.0) | 729 |
radians(BigDecimal) | BigDecimal | ラジアンに対応する度 | radians(45.0) | 0.785398163397448 |
random() | BigDecimal | 0.0 〜 1.0 の乱数 | random() | |
round(BigDecimal) | Long | 四捨五入 | round(42.4) | 42 |
sign(Integer) | Integer | 引数の符号(-1, 0, 1) | sign(-3) | -1 |
sign(Long) | Integer | 引数の符号(-1, 0, 1) | sign(-30000000000) | -1 |
sign(BigDecimal) | Integer | 引数の符号(-1, 0, 1) | sign(-3.0) | -1 |
sqrt(BigDecimal) | BigDecimal | 平方根 | sqrt(2.0) | 1.4142135623731 |
trunc(BigDecimal) | BigDecimal | 切捨て | trunc(42.8) | 42 |
Flowletには、以下の三角関数があります。
関数 | 戻り値の型 | 説明 |
---|---|---|
acos(BigDecimal) | BigDecimal | 逆余弦関数 |
asin(BigDecimal) | BigDecimal | 逆正弦関数 |
atan(BigDecimal) | BigDecimal | 逆正接関数 |
atan2(BigDecimal x, BigDecimal y) | BigDecimal | y/x の逆正接関数 |
cos(BigDecimal) | BigDecimal | 余弦関数 |
sin(BigDecimal) | BigDecimal | 正弦関数 |
tan(BigDecimal) | BigDecimal | 正接関数 |
Flowletには、以下の文字列演算子があります。
演算子 | 戻り値の型 | 説明 | 例 | 結果 |
---|---|---|---|---|
String || String | String | 文字列の連結 | 'Hello ' || 'Nazuna' | 'Hello Nazuna' |
Flowletには、以下の文字列関数があります。
関数 | 戻り値の型 | 説明 | 例 | 結果 |
---|---|---|---|---|
ascii(String) | Integer | 引数の第一文字のASCIIコード | ascii('x') | 120 |
btrim(String str[, String trim]) | String | trim(デフォルトはスペース)で指定された文字のみを含む最長の文字列をstrの先頭と末尾から削除します。 | btrim('aabxyzbba', 'ab') | 'xyz' |
chr(Integer) | String | ASCIIコードに対応する文字 | chr(120) | 'x' |
length(String) | Integer | 文字数 | length('なずな') | 3 |
lower(String) | String | 文字列を小文字に変換 | lower('NAZUNA') | 'nazuna' |
lpad(String str, Integer length[, String fill]) | String | fill(デフォルトはスペース)をstrの先頭に追加してlengthの長さにします。strがlengthの長さを越えている場合は(右側が)切り捨てられます。 | lpad('abc', 6, 'xy') | 'xyxabc' |
ltrim(String str[, String trim]) | String | trim(デフォルトはスペース)で指定された文字のみを含む最長の文字列をstrの先頭から削除します。 | ltrim('aabxyz', 'ab') | 'xyz' |
position(String:str2 in String:str) | Integer | str中のstr2の位置(最初の文字は1)。 | position('cd' in 'abcde') | 3 |
repead(String str, Integer num) | String | strをnum回繰り返します。 | repead('Nz', 4) | 'NzNzNzNz' |
rpad(String str, Integer length[, String fill]) | String | fill(デフォルトはスペース)をstrの末尾に追加してlengthの長さにします。strがlengthの長さを越えている場合は(右側が)切り捨てられます。 | rpad('abc', 6, 'xy') | 'abcxyx' |
rtrim(String str[, String trim]) | String | trim(デフォルトはスペース)で指定された文字のみを含む最長の文字列をstrの末尾から削除します。 | rtrim('xyzaab', 'ab') | 'xyz' |
strpos(String str, String str2) | Integer | str中のstr2の位置。positionと引数の順序が逆になります。 | strpos('abcde', 'cd') | 3 |
substr(String str, Integer pos[, Integer num]) | String | str中のpos番目(最初の文字は1)からnum文字を取り出します。numを指定しない場合は、最後の文字まで取り出します。 | substr('abcdef', 3, 2) | 'cd' |
substring(String:str from Integer:pos [for Integer:num]) | String | substrと同じです。 | substr('abcdef' from 3 for 2) | 'cd' |
trim([leading | trailing | both] [String:trim] from String:str) | String | trim(デフォルトはスペース)で指定された文字のみを含む最長の文字列をstrの先頭、末尾、両側から削除します。 | trim(both 'ab' from 'aabxyzbba') | 'xyz' |
upper(String) | String | 文字列を大文字に変換 | upper('nazuna') | 'NAZUNA' |
translate(String str, String src, String dest) | String | str中のsrcで指定された文字列をdestで置き換えます。 | translate('abcdefgcd', 'cd', '12') | 'ab12efg12' |
Flowletには、以下の日付関数があります。
関数 | 戻り値の型 | 説明 |
---|---|---|
now() | Timestamp | 現在日時 |
Flowletでは、SQLのようにlikeを使ったパターンマッチングができます。
String:str like String:pattern String:str not like String:pattern
patternは、文字列の集合です。 likeは、patternによって示される文字列の集合にstrが含まれていればtrueを返します。
patternがパーセント記号(%)もしくはアンダースコア(_)を含んでいない場合、
patternは文字列そのものです。
アンダースコア(_)は、任意の一文字とマッチし、
パーセント記号(%)は、0文字以上の任意の文字列とのマッチします。
'xyz' like 'xyz' -> true 'xyz' like 'abc' -> false 'xyz' like 'x%' -> true 'xyz' like 'x_z' -> true 'xyz' like '__z' -> true
Flowletでは、正規表現を使ったパターンマッチングもできます。
演算子 | 説明 | 例 |
---|---|---|
~ | 正規表現にマッチ、大文字小文字の区別あり | 'abcAde' ~ '[a-zA-Z]*' |
~* | 正規表現にマッチ、大文字小文字の区別なし | 'abcAde' ~* '[a-z]*' |
!~ | 正規表現にアンマッチ、大文字小文字の区別あり | 'abcAde' !~ '[a-zA-Z]*' |
!~* | 正規表現にアンマッチ、大文字小文字の区別なし | 'abcAde' !~* '[a-z]*' |
条件に応じた値を返したい場合、case式を使うことができます。
下記の形式のcase式は、Javaのif文に似ています。
最初のwhen句の式がtrueの場合、then句の値を返します。。
falseであれば、同じように後続のwhenが調べられます。
すべてのwhen句の式がfalseの場合、else句の値を返します。。
else句がない場合は、nullを返します。
case when booleanを返す式 then 値 [when booleanを返す式 then 値] [else 値] end
例(aは変数)
case when a = 1 then 'one' when a = 2 then 'two' else 'other' end
下記の形式のcase式は、Javaのswitch文に似ています。
式と最初のwhen句の値が等しい場合、then句の値を返します。。
等しくない場合、同じように後続のwhenが調べられます。
すべてのwhen句の式がfalseの場合、else句の値を返します。
else句がない場合は、nullを返します。
case 式 when 値 then 値 [when 値 then 値] [else 値] end
上記のcase式は、下記のcase式の簡略形です。
case when 式 = 値 then 値 [when 式 = 値 then 値] [else 値] end
coalesceは、nullでない最初の引数を返します。
coalesce(value[, ...])
nullifは、value1とvalue2が等しい場合にnullを返します。 それ以外は、value1を返します。
nullif(value1, value2)
Flowletには、以下の型変換関数があります。