ZCQL V2の構文と例外
Catalystは、ZCQLクエリをより効果的に記述するための構文のアップグレードと機能強化をいくつか追加しました。これらの新しい構文アップグレードは、追加の機能を提供し、Data Storeでのデータ関連操作をより簡単に実行できるようにします。
ZCQLクエリを実行する際には、以下の例外と構文の注意点に留意する必要があります:
-
AVG () ZCQL関数は以下のデータ型に適用できます:
- Date
- DateTime
- Boolean
-
ZCQL文で値を指定する場合は、値をシングルクォーテーションで囲んで指定してください。
たとえば、従業員データベースから特定の名前を取得する場合、以下のようにコマンドを記述します:
SELECT Name FROM Employee_DB WHERE name = 'Amelia'
-
カラムがBooleanデータ型の場合:
- 文字列値は許可されません。
- Booleanデータ型は以下の値のみをサポートします:
- FALSE
- TRUE
- NULL
-
Encryptedデータ型を使用している場合、そのカラムには以下のZCQL関数を使用できません:
- AVG()
- SUM()
- MAX()
- MIN()
-
Less Than、Greater Than、Less Than or Equal、Greater Than or Equalなどの比較演算子をEncrypted TextおよびBooleanデータ型で使用する場合、適切な例外が追加されています。これらの例外はEqualおよびNot Equal演算子には適用されません。
-
WHERE句文でサブクエリがサポートされるようになりました。詳細については、このヘルプドキュメントをご参照ください。
-
ORDER BY句を使用するすべてのカラムで、ASCとDESCの機能を適用できるようになりました。個別のカラムに対してもASCとDESCを適用できます。
サンプルデータベース:
以下のデータベースを考えてみましょう - ZylkerEmployeeCompensation
| Name | Salary | Reimbursement |
|---|---|---|
| Michelle Mascarenhas | 90000 | 10000 |
| Bruce Kyle | 3000000 | 45000 |
| Clark Kane | 3300 | 1500 |
| Judith Bridges | 4700 | 300 |
| Devon Dreymond | 80000 | 2300 |
| Ashley Kim | 6000 | 200 |
テーブルをリストするには以下のコマンドを実行します
SELECT Salary, Reimbursement FROM ZylkerEmployeeCompensation ORDER BY Salary ASC, Reimbursement DESC
出力:
| ZylkerEmployeeCompensation.Salary | ZylkerEmployeeCompensation.Reimbursement |
|---|---|
| 3300 | 45000 |
| 4700 | 10000 |
| 6000 | 2300 |
| 80000 | 1500 |
| 90000 | 300 |
| 3000000 | 200 |
-
以下のケースでは適切な例外がトリガーされます:
- Integerデータ型で許可される最大/最小値を超えた場合。
- VarCharデータ型で文字長が設定した値より長い場合。
- BIGINTデータ型でサポート範囲を超える値の場合。
-
1つのZCQL文に4つのJOIN句を記述できます。ただし、各JOIN句に対して1つのJOIN条件のみ記述できます。
-
ZCQLでテーブルエイリアス機能がサポートされるようになりました。AS ZCQLコマンドを使用してZCQLでエイリアス機能を呼び出すことができます。このコマンドを使用すると、テーブルを別の名前で参照できます。
サンプルデータベース:
以下のデータベースを考えてみましょう:
テーブル1: ZylkerEmployeeCompensation
| Name | Salary | Reimbursement |
|---|---|---|
| Michelle Mascarenhas | 90000 | 10000 |
| Bruce Kyle | 3000000 | 45000 |
| Clark Kane | 3300 | 1500 |
| Judith Bridges | 4700 | 300 |
| Devon Dreymond | 80000 | 2300 |
| Ashley Kim | 6000 | 200 |
テーブル2: ZylkerEmployeeRelation
| Manager | Member |
|---|---|
| Michelle Mascarenhas | Bruce Kyle |
| Michelle Mascarenhas | Clark Kane |
| Judith Bridges | Michelle Mascarenhas |
テーブルをリストするには以下のコマンドを実行します
SELECT Managers.Name, Members.Name FROM ZylkerEmployeeCompensation AS Managers
INNER JOIN ZylkerEmployeeRelation AS asso ON Managers.ROWID = asso.Manager
INNER JOIN ZylkerEmployeeCompensation AS Members ON Members.ROWID = asso.Member
出力:
| Manager.Name | Member.Name |
|---|---|
| Michelle Mascarenhas | Bruce Kyle |
| Michelle Mascarenhas | Clark Kane |
| Judith Bridges | Michelle Mascarenhas |
-
IS/IS NOT演算子を使用してNULL値があるかどうかを確認できます。IS/IS NOT演算子のサポートはNULL値に対してのみ利用可能です。
-
GROUP BYとBinaryof()文を記述する際は、以下のZCQLルールに留意する必要があります:
- Binaryof()機能はGROUP BY文でのみ使用できます。
- Binaryof()はVarCharまたはTextデータ型のカラムにのみ使用できます。
- Binaryof()がGROUP BY文で使用される場合、返される値は大文字と小文字が区別されます。たとえば、Zylker_EMPというテーブルのNameというカラムに’AMELIA’、‘amelia’、‘Burrows’、‘burrows’の値があるとします。以下のコマンドを使用した場合:
Select Name from Zylker_EMP group by binaryof(Name)
結果は以下のいずれかになる可能性があります:
- AMELIA
- amelia
- burrows
- Burrows
- カラム名に数値を含めることができるようになりました。クエリ内でそのようなカラム名をバッククォート(`)記号を使用して指定できます。
たとえば、Numbersというテーブルの01というカラムに対するSELECTクエリは以下のように記述できます:
SELECT `01` FROM Numbers
ZCQL例外一覧
以下は、一般的な例外とこれらの例外をトリガーする可能性のあるクエリ文の例のリストです。リストを確認し、ZCQL構文を厳密に遵守してこれらの例外のトリガーを回避してください。
| データ型 | ケース | サンプルZCQLクエリ | トリガーされる例外 |
|---|---|---|---|
| Encrypted Text | 特定の演算子がサポートされていない | SELECT * FROM temp WHERE enc > 'temsp' | Operator > is not supported for ENCRYPTED TEXT ZCQL文で**<、<=、>=**の演算子を使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
| LIKEがサポートされていない | SELECT * FROM temp WHERE enc LIKE '*temsp' | Operator LIKE is not supported for ENCRYPTED TEXT ZCQL文でNOT LIKEを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| BETWEENがサポートされていない | SELECT * FROM temp WHERE enc BETWEEN 'one' AND 'ten' | Operator BETWEEN is not supported for ENCRYPTED TEXT ZCQL文でNOT BETWEENを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| INがサポートされていない | SELECT * FROM temp WHERE enc IN ('one','three') | Operator IN is not supported for ENCRYPTED TEXT クエリでNOT INを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| ZCQL関数がサポートされていない | SELECT AVG(enc) FROM temp | AVG() function is not supported for ENCRYPTED_TEXT ZCQL関数はEncrypted Textではサポートされていません。 |
|
| Boolean | 特定の演算子がサポートされていない | SELECT * FROM temp WHERE bools > FALSE | Operator > is not supported for BOOLEAN
ZCQL文で**<、<=、>=**の演算子を使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
| LIKEがサポートされていない | SELECT * FROM temp WHERE bools LIKE FALSE | Operator LIKE is not supported for BOOLEAN
クエリでNOT LIKEを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| BETWEENがサポートされていない | SELECT * FROM temp WHERE bools BETWEEN TRUE and FALSE | Operator BETWEEN is not supported for BOOLEAN クエリでNOT BETWEENを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| INがサポートされていない | SELECT * FROM temp WHERE bools IN (TRUE, FALSE) | Operator IN is not supported for BOOLEAN
クエリでNOT INを使用した場合も同じ例外が適用されますが、例外メッセージはそれに応じて変更されます |
|
| VarChar | 最大長を超過 | INSERT INTO temp (Fishes) value (‘salmon’) | ‘salmon’ data too long for column ‘Fishes’
カラムFishesはVarCharとして作成され、MaxLengthは5に設定されています。この文では、‘Salmon’がMaxLengthを超えています |
| Integer | 最大値を超過 | INSERT INTO temp (numbers) VALUE (546895326908) | For column ‘ints’ INT value should be between -9999999999 and 9999999999 カラムnumbersはINTとして作成されています。INTデータ型の値は-9999999999から9999999999の間である必要があります |
| Big Integer | 最大値を超過 | INSERT INTO temp (numbers) VALUE (92343432412351 435123453245) |
Given numeric value 92343432412351 435123453 is too large カラムnumbersはBIGINTとして作成されています。BIGINTデータ型の値は-9223372036854775808から9223372036854775807の間である必要があります |
| Text | 値がシングルクォーテーションで囲まれていない | SELECT * FROM temp WHERE name = one | Unknown Table temp or Unknown Column one in WHERE 値oneがクォーテーションで囲まれていない場合、カラムとして認識されます-’one’ |
最終更新日 2026-02-23 18:09:41 +0530 IST
Yes
No
Send your feedback to us