全部產品
Search
文件中心

IoT Platform:其他函數

更新時間:Jun 30, 2024

本文為您提供資料分析支援的CAST、DECODE、LEAST、ARRAY、SIZE、NVL等函數的命令格式、參數說明及樣本。

函數

功能

CAST

將運算式的結果轉換成目標類型。

COALESCE

返回列表中第一個非NULL的值。

DECODE

實現if-then-else分支選擇的功能。

GREATEST

返回輸入參數中最大的一個。

LEAST

返回輸入參數中最小的一個。

UUID

返回一個隨機ID。

CASE WHEN運算式

根據運算式的計算結果,靈活地返回不同的值。

IF運算式

判斷指定的條件是否為真。

SIZE

返回指定MAP中的K/V對數或ARRAY中的元素數目。

CRYPTO

對指定值進行加密。

DEVICENAME

返回當前裝置名稱。

TOPIC

返回Topic分段資訊。

MESSAGEID

返回物聯網平台產生的訊息ID。

CAST

  • 命令格式

    cast(<expr> as <type>)
  • 命令說明

    expr的結果轉換成目標資料類型,用法如下:

    • cast(double as bigint):將DOUBLE資料類型值轉換成BIGINT資料類型。

    • cast(string as bigint):在將字串轉為BIGINT資料類型時,如果字串中是以整型表達的數字,則會直接將它們轉為BIGINT類型。如果字串中是以浮點數或指數形式表達的數字,則會先轉為DOUBLE資料類型,再轉為BIGINT資料類型。

    • cast(string as datetime)cast(datetime as string):會採用預設的日期格式yyyy-mm-dd hh:mi:ss

  • 參數說明

    • expr:必填。運算式,待轉換資料來源。

    • type:必填。目標資料類型。

  • 傳回值說明

    傳回值為轉換後的目標資料類型。

  • 樣本

    • 樣本1:常見用法。

      --返回1。
          cast('1' as bigint);
    • 樣本2:異常用法,如果轉換不成功或遇到不支援的類型轉換,則會返回NULL。

      --返回NULL。
          cast('abc' as bigint);

COALESCE

  • 命令格式

    coalesce(<expr1>, <expr2>, ...)
  • 命令說明

    返回<expr1>, <expr2>, ...中第一個非NULL的值,如果列表中所有的值都是NULL,則返回NULL。

  • 參數說明

    expr:必填。待驗證的值。所有實值型別必須相同或為NULL,不一致的資料類型會返回報錯。至少要有一個參數非NULL,否則會返回報錯。

  • 傳回值說明

    傳回值類型和參數類型相同。

  • 樣本

    • 樣本1:常見用法。

      --返回1。
          coalesce(null,null,1,null,3,5,7);
    • 樣本2:參數實值型別不一致,返回報錯。

      --返回報錯,無法識別abc。
          coalesce(null,null,1,null,abc,5,7);
    • 樣本3:參數值無非NULL值,返回報錯。

      --返回報錯,至少有一個參數值非NULL。
          coalesce(null,null,null,null);

DECODE

  • 命令格式

    decode(<expression>, <search>, <result>[, <search>, <result>]...[, <default>])
  • 命令說明

    實現if-then-else分支選擇的功能。

  • 參數說明

    • expression:必填。要比較的運算式。

    • search:必填。與expression進行比較的搜尋項。

    • result:必填。searchexpression的值匹配時的傳回值。

    • default:可選。如果所有的搜尋項都不匹配,則返回此default值,如果未指定,則返回NULL。

    說明
    • 至少要指定三個參數。

    • 所有的result類型必須一致或為NULL。不一致的資料類型會引發異常。

    • 所有的searchexpression類型必須一致,否則會引發異常。

  • 傳回值說明

    • 如果匹配,返回result

    • 如果沒有匹配,返回default

    • 如果沒有指定default,返回NULL。

    • 如果search選項有重複且匹配時,會返回第一個值。

    • 通常,在計算NULL=NULL時返回NULL,但在該函數中,NULL與NULL的值是相等的。

  • 樣本

    當customer_id的值為1時,返回Taobao;值為2時,返回Alipay;值為3時,返回Aliyun;值為NULL時,返回NA;其他情境返回Others。

    decode(customer_id,
    '1', 'Taobao',
    '2', 'Alipay',
    '3', 'Aliyun',
    Null, 'NA',
    'Others');

    等效於如下語句:

    if customer_id = 1 then
    result := 'Taobao';
    elsif customer_id = 2 then
    result := 'Alipay';
    elsif customer_id = 3 then
    result := 'Aliyun';
    ...
    else
    result := 'Others';
    end if;

GREATEST

  • 命令格式

    greatest(<var1>, <var2>, …)
  • 命令說明

    返回輸入參數中最大的值。

  • 參數說明

    var:必填。可以為BIGINT、DOUBLE、DECIMAL、DATETIME或STRING資料類型。如果所有的參數值都為NULL,則返回NULL。

  • 傳回值說明

    • 返回輸入參數中的最大值。當不存在隱式轉換時,傳回值同輸入參數類型。

    • NULL為最小值。

    • 當輸入參數類型不同時,DOUBLE、BIGINT、DECIMAL、STRING之間的比較轉為DOUBLE類型;STRING、DATETIME的比較轉為DATETIME類型。不允許其它的隱式轉換。

LEAST

  • 命令格式

    least(<var1>, <var2>, …)
  • 命令說明

    返回輸入參數中最小的值。

  • 參數說明

    var :必填。輸入參數值,為BIGINT、DOUBLE、DECIMAL、DATETIME或STRING資料類型。如果所有參數值都為NULL,則返回NULL。

  • 傳回值說明

    • 輸入參數中的最小值。當不存在隱式轉換時,傳回值同輸入參數類型。

    • 當有類型轉換時,DOUBLE、BIGINT、STRING之間的轉換返回DOUBLE類型;STRING、DATETIME之間的轉換返回DATETIME類型;DECIMAL和DOUBLE、BIGINT、STRING之間的轉換返回DECIMAL類型。不允許其它的隱式類型轉換。

    • NULL為最小值。

UUID

  • 命令格式

    string uuid()
  • 命令說明

    返回一個隨機ID,格式為29347a88-1e57-41ae-bb68-a9edbdd9****

    說明

    UUID返回的是一個隨機的全域ID,其重複的機率很小。

CASE WHEN運算式

  • 命令格式

    提供以下兩種case when格式:

    • case <value>
      when <value1> then <result1>
      when <value2> then <result2>
      ...
      else <resultn>
      end
    • case
      when (<_condition1>) then <result1>
      when (<_condition2>) then <result2>
      when (<_condition3>) then <result3>
      ...
      else <resultn>
      end
  • 命令說明

    根據value_condition的計算結果,靈活地返回不同的result值。

  • 參數說明

    • value:必填。比較的值。

    • _condition:必填。指定條件。

    • result:必填。傳回值。

    說明
    • 如果result類型只有BIGINT、DOUBLE,統一轉為DOUBLE後,再返回。

    • 如果result類型中有STRING類型,則統一轉為STRING後,再返回。如果無法進行類型轉換,例如BOOLEAN類型無法轉換為STRING類型,則會返回報錯。

    • 不允許其它類型之間的轉換。

  • 樣本

    根據shop_name的不同情況得出所屬地區。

    case  
    when shop_name is null then 'default_region'
    when shop_name like 'hang%' then 'zj_region'
    end as region 
    from sale_detail;

IF運算式

  • 命令格式

    if(<testCondition>, <valueTrue>, <valueFalseOrNull>)
  • 命令說明

    判斷testCondition是否為真。如果為真,返回valueTrue的值,否則返回valueFalseOrNull的值。

  • 參數說明

    • testCondition:必填。要判斷的運算式,BOOLEAN類型。

    • valueTrue:必填。運算式testCondition為True時,返回的值。

    • valueFalseOrNull:運算式testCondition為False時,返回的值,可以設為NULL。

  • 傳回值說明

    傳回值類型和參數valueTruevalueFalseOrNull的類型一致。

  • 樣本

    --返回200。
        if(1=2,100,200); 

SIZE

  • 命令格式

    INT size(map)
    INT size(array)
  • 命令說明

    size(map)返回給定map中K、V對數。size(array)返回給定的array中的元素數目。

  • 參數說明

    • map:MAP類型的資料。

    • array:ARRAY類型的資料。

  • 樣本

    --返回2。
        size(map('a',123,'b',456)); 
    --返回3。
        size(map('a',123,'b',456,'c',789)); 
    --返回2。
        size(array('a','b'));
    --返回3。 
        size(array(123,456,789)); 

CRYPTO

  • 命令格式

    crypto(field,String)
  • 命令說明

    根據String演算法對field的值進行加密。

  • 參數說明

    field:必填。任意類型值。

    String:演算法字串。可選:MD2、MD5、SHA1、SHA-256、SHA-384、SHA-512。

DEVICENAME

  • 命令格式

    deviceName()
  • 命令說明

    返回當前裝置名稱。

TOPIC

  • 命令格式

    topic(INT number)
  • 命令說明

    返回Topic分段資訊。

    如,有一個Topic:/alDbcLe****/TestDevice/user/set。使用函數topic(),則返回整個Topic;使用topic(1),則返回Topic的第一級類目alDbcLe****使用topic(2),則返回第二級類目TestDevice,以此類推。

  • 參數說明

    number:INT類型。非必填。

MESSAGEID

  • 命令格式

    messageId()
  • 命令說明

    返回物聯網平台產生的訊息ID。