IN、NOT INおよびBETWEEN QBE演算子

QBE演算子_in_ninおよび_betweenを使用して、簡単な例でカー・レース・データセットから特定のデータをフィルタリングする方法について説明します。

_inおよび_nin演算子を使用すると、指定した配列に述語が存在するかどうかを比較およびチェックできます。

例3-9 _in演算子

SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
    driver (
        check: {
            name: {_in: ["Oscar Piastri", "Max Verstappen"]}
        }
    ){
        id: driver_id
        name
        points
    }
');

前述の例では、driver表の各行について、nameフィールドが["Oscar Piastri", "Max Verstappen"]のいずれかであるかどうかを確認しています。結果がTRUEの場合、対応するドライバの詳細(この場合はidnameおよびpoints)がフェッチされます:

DATA                                                                           
--------------------------------------------------------------------------------
{                                                                              
  "id" : 105,                                                                  
  "name" : "Max Verstappen",                                                   
  "points" : 456                                                               
}                                                                              
                                                                                 
{                                                                              
  "id" : 102,                                                                  
  "name" : "Oscar Piastri",                                                    
  "points" : 384                                                               
}                                                                              
                                                                                 
 
2 rows selected.

_between QBE演算子は、配列で指定された2つの値の間に述語があるかどうかをチェックします:

例3-10 _between演算子

SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
    driver (
        check: {
            points: {_between: [300, 400]}
        }
    ){
        id: driver_id
        name
        points
    }
');

このコードは、表driverにアクセスし、points300400の間にあるドライバをチェックし、idnameおよびpointsを取得します。

DATA                                                                           
--------------------------------------------------------------------------------
{                                                                              
  "id" : 102,                                                                  
  "name" : "Oscar Piastri",                                                    
  "points" : 384                                                               
}                                                                              
                                                                                 
{                                                                              
  "id" : 103,                                                                  
  "name" : "Charles Leclerc",                                                  
  "points" : 312                                                               
}                                                                              
                                                                                 
{                                                                              
  "id" : 104,                                                                  
  "name" : "Carlos Sainz Jr.",                                                 
  "points" : 340                                                               
}                                                                              
                                                                                 
 
3 rows selected.