本文為您介紹查詢類型和操作類型的指令碼編輯說明。
Get/List(查詢類型)
支援的查詢模式:
支援同一資料來源下的單表查詢、多表關聯查詢(Join)和巢狀查詢(子查詢)。
支援進階SQL模式(MyBatis風格)。
支援在Select地區配置參數,例如:
SELECT id_card, SUM(CASE WHEN id_card LIKE ${id_card} THEN 1 ELSE 0 END) AS proj_score FROM table WHERE c LIKE ${id_card} GROUP BY id_card。
不支援的文法與用法:
多條SQL查詢語句:不支援在單個API中執行多條SQL(如:
SELECT ...; SELECT ...;)。非DQL語句:在List和Get操作類型API中,不支援INSERT、UPDATE、CREATE和DELETE等非DQL文法。
SELECT *:不支援
SELECT *查詢,查詢時必須明確指定查詢的列。列名首碼:若列名帶表首碼(例如:t.name),必須使用別名作為返回參數名
SELECT t.name AS name FROM table。彙總函式:使用
SUM()、COUNT()、MAX()、MIN()等彙總函式時,必須使用別名作為返回參數名。例如:SELECT SUM(num) AS total_num FROM table。分頁語句:不支援在SQL中使用分頁語句,需通過分頁參數實現分頁。
說明當資料來源為SAP HANA,需要在SQL中使用分頁語句,定義分頁參數實現分頁。
當資料來源為TDengine,需要在SQL中使用分頁語句,若不傳入分頁參數(即PageStart、PageSize),則返回全量資料;若傳入分頁參數,則根據定義的分頁參數返回資料。
動態欄位查詢(進階SQL模式),支援通過參數動態指定返回欄位,並將參數寫在查詢語句內。
參數格式:必須以var_cols開頭,格式為:var_cols_xxx(如var_col_args),如
SELECT id, ${var_cols_args} FROM table1。返回參數:返回參數中需要將所有可支援的動態查詢的欄位添加為返回參數。
調用API:調用API時,在動態參數中傳入需要查詢的欄位即可,未傳入的欄位在返回結果中為null值。例如:
var_col_args=name,age,dept。實際執行:SQL語句為:
SELECT id, name, age, dept FROM table1。
SQL模式為進階SQL時,在Mybatis SQL中,比較子需要用逸出字元。
原符號
轉義符號
<<>><=<=>=>=資料來源特異性限制:
資料來源
限制說明
TDengine
必須在SQL中使用
LIMIT/OFFSET實現分頁。不支援選擇性參數。
SAP HANA
不支援分頁,即傳入PageStart、PageSize參數不生效。
不支援選擇性參數。
Elasticsearch
使用ScrollId實現分頁查詢。當不指定ScrollId時,最多隻能查詢前10000條資料,調用設定分頁PageStart和PageSize時,請注意不要查詢超過10000條資料,否則調用會失敗。
例如:PageStart設定為9998,PageSize最大隻能設定為2。
如果要查詢10000條以後的資料,需要使用where語句指定scrollId,可以在API開發時指定一個請求參數scrollId,查詢時傳入對應的scrollId值。
說明指定了scrollId值查詢時,就不能使用分頁,即PageStart和PageSize不能傳值,否則調用失敗。
where語句中只支援scrollId欄位作為條件查詢,其餘欄位不生效。
例如:
select a from table where scrollId=${scrollId}。不支援子查詢語句。
HBase
僅支援單條
rowkey查詢,其中rowkey是必填的請求參數,查詢文法為:select info1.id as name from table where rowkey = ${rowkey}不支援Order by排序文法。
不支援分頁,即傳入PageStart、PageSize參數不生效。
不支援Join語句。
PostgreSQL
不支援跨Schema查詢,僅限當前串連的Schema查詢資料。
Impala
不支援進階SQL模式(MyBatis風格)。
Lindorm
不支援
JOIN語句。
Create/Update/Delete(操作類型)
支援的SQL模式:
基礎SQL模式:支援標準
INSERT、UPDATE、DELETE語句,使用${param}預留位置傳參,適用於簡單情境。進階SQL模式(MyBatis 風格):可用於條件判斷、動態欄位、大量操作等複雜邏輯,支援的標籤如下:
<if>、<choose>、<when>、<otherwise>、<trim>、<foreach>
進階SQL模式且是批量處理時,每條資料會單獨執行,效能較差。因此在批量增刪改介面中,請盡量避免使用進階模式。
若SQL中包含
in條件參數,則每條資料會單獨執行,效能較差。請盡量避免使用in條件參數。僅PostgreSQL支援RETURNING文法。