日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

SQL分析提供了開發(fā)過程中常見的其他函數(shù),您可以根據(jù)實(shí)際需要選擇合適的函數(shù)。本文為您提供SQL分析支持的CAST、DECODE、LEAST等函數(shù)的命令格式、參數(shù)說明及示例。

函數(shù)

功能

BETWEEN AND表達(dá)式

篩選滿足區(qū)間條件的數(shù)據(jù)。

CASE WHEN表達(dá)式

根據(jù)表達(dá)式的計算結(jié)果,靈活地返回不同的值。

CAST

將表達(dá)式的結(jié)果轉(zhuǎn)換為目標(biāo)數(shù)據(jù)類型。

COALESCE

返回參數(shù)列表中第一個非NULL的值。

DECODE

實(shí)現(xiàn)if-then-else分支選擇的功能。

GREATEST

返回輸入?yún)?shù)中最大的值。

IF

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

LEAST

返回輸入?yún)?shù)中最小的值。

NULLIF

比較兩個入?yún)⑹欠裣嗟取?/p>

NVL

指定值為NULL的參數(shù)的返回結(jié)果。

BETWEEN AND表達(dá)式

  • 命令格式

    <a> [NOT] between <b> and <c>
  • 命令說明

    篩選滿足a的值位于bc之間或不在bc之間的數(shù)據(jù)。

  • 參數(shù)說明

    • a:必填。待篩選的字段。

    • bc:必填。指定的區(qū)間條件。數(shù)據(jù)類型必須與a的數(shù)據(jù)類型保持一致。

  • 返回值說明

    返回滿足條件的數(shù)據(jù)。

    如果abc為空,返回結(jié)果為空。

  • 示例

    查詢sal大于等于1000小于等于1500之間的數(shù)據(jù),命令示例如下。

    select * from emp where sal between 1000 and 1500;

CASE WHEN表達(dá)式

  • 命令格式

    SQL分析提供以下兩種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
  • 命令說明

    根據(jù)value_condition的計算結(jié)果,靈活地返回不同的result值。

  • 參數(shù)說明

    • value:必填。比較的值。

    • _condition:必填。指定判斷條件。

    • result:必填。返回值。

  • 返回值說明

    • 如果result類型只有BIGINT、DOUBLE,統(tǒng)一轉(zhuǎn)為DOUBLE后,再返回結(jié)果。

    • 如果result類型中有STRING類型,則統(tǒng)一轉(zhuǎn)為STRING后,再返回結(jié)果。如果無法進(jìn)行類型轉(zhuǎn)換,例如BOOLEAN類型無法轉(zhuǎn)換為STRING類型,則會返回報錯。

    • 不允許其他類型之間的轉(zhuǎn)換。

  • 示例

    例如表sale_detail的字段為shop_name string, customer_id string, total_price double,,包含數(shù)據(jù)如下。

    +------------+-------------+-------------+------------+------------+
    | shop_name  | customer_id | total_price | sale_date  | region     |
    +------------+-------------+-------------+------------+------------+
    | s1         | c1          | 100.1       | 2013       | china      |
    | s2         | c2          | 100.2       | 2013       | china      |
    | s3         | c3          | 100.3       | 2013       | china      |
    | null       | c5          | NULL        | 2014       | shanghai   |
    | s6         | c6          | 100.4       | 2014       | shanghai   |
    | s7         | c7          | 100.5       | 2014       | shanghai   |
    +------------+-------------+-------------+------------+------------+

    命令示例如下。

    select 
    case  
    when region='china' then 'default_region'
    when region like 'shang%' then 'sh_region'
    end as region 
    from sale_detail;

    返回結(jié)果如下。

    +------------+
    | region     |
    +------------+
    | default_region |
    | default_region |
    | default_region |
    | sh_region  |
    | sh_region  |
    | sh_region  |
    +------------+

CAST

  • 命令格式

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

    expr的結(jié)果轉(zhuǎn)換成目標(biāo)數(shù)據(jù)類型type

  • 參數(shù)說明

    • expr:必填。待轉(zhuǎn)換數(shù)據(jù)源。

    • type:必填。目標(biāo)數(shù)據(jù)類型。用法如下:

      • cast(double as bigint):將DOUBLE數(shù)據(jù)類型值轉(zhuǎn)換成BIGINT數(shù)據(jù)類型。

      • cast(string as bigint):在將字符串轉(zhuǎn)為BIGINT數(shù)據(jù)類型時,如果字符串中是以整型表達(dá)的數(shù)字,則會直接將它們轉(zhuǎn)為BIGINT類型。如果字符串中是以浮點(diǎn)數(shù)或指數(shù)形式表達(dá)的數(shù)字,則會先轉(zhuǎn)為DOUBLE數(shù)據(jù)類型,再轉(zhuǎn)為BIGINT數(shù)據(jù)類型。

      • cast(string as datetime)cast(datetime as string):會采用默認(rèn)的日期格式yyyy-mm-dd hh:mi:ss

  • 返回值說明

    • 返回值為轉(zhuǎn)換后的目標(biāo)數(shù)據(jù)類型。

  • 示例

    • 示例1:常見用法。命令示例如下。

      --返回1。
      select cast('1' as bigint);
    • 示例2:將STRING數(shù)據(jù)類型值轉(zhuǎn)換成BOOLEAN數(shù)據(jù)類型,當(dāng)STRING為空字符串時返回false,否則返回true。命令示例如下。

      • STRING為空字符串。

        select cast("" as boolean);
        --返回
        +------+
        | _c0  |
        +------+
        | false |
        +------+
      • STRING為非空字符串。

        select cast("false" as boolean);
        --返回true
        +------+
        | _c0  |
        +------+
        | true |
        +------+

COALESCE

  • 命令格式

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

    返回<expr1>, <expr2>, ...中第一個非NULL的值。

  • 參數(shù)說明

    expr:必填。待驗(yàn)證的值。

  • 返回值說明

    返回值類型和參數(shù)數(shù)據(jù)類型相同。

  • 示例

    常見用法。命令示例如下。

    --返回1。
    select coalesce(null,null,1,null,3,5,7);

DECODE

  • 命令格式

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

    實(shí)現(xiàn)if-then-else分支選擇的功能。

  • 參數(shù)說明

    • expression:必填。要比較的表達(dá)式。

    • search:必填。與expression進(jìn)行比較的搜索項(xiàng)。

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

    • default:可選。如果所有的搜索項(xiàng)都不匹配,則返回default值,如果未指定,則返回NULL。

    說明
    • 所有的result數(shù)據(jù)類型必須一致或?yàn)镹ULL。不一致的數(shù)據(jù)類型會返回報錯。

    • 所有的searchexpression數(shù)據(jù)類型必須一致,否則會返回報錯。

  • 返回值說明

    • 如果匹配,返回result

    • 如果沒有匹配,返回default

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

    • 如果search選項(xiàng)有重復(fù)且匹配時,會返回第一個值。

    • 通常,SQL分析在計算NULL=NULL時返回NULL,但在該函數(shù)中,NULL與NULL的值是相等的。

  • 示例

    例如表sale_detail的字段為shop_name string, customer_id string, total_price double,,包含數(shù)據(jù)如下。

    +------------+-------------+-------------+------------+------------+
    | shop_name  | customer_id | total_price | sale_date  | region     |
    +------------+-------------+-------------+------------+------------+
    | s1         | c1          | 100.1       | 2013       | china      |
    | s2         | c2          | 100.2       | 2013       | china      |
    | s3         | c3          | 100.3       | 2013       | china      |
    | null       | c5          | NULL        | 2014       | shanghai   |
    | s6         | c6          | 100.4       | 2014       | shanghai   |
    | s7         | c7          | 100.5       | 2014       | shanghai   |
    +------------+-------------+-------------+------------+------------+

    命令示例如下。

    --當(dāng)customer_id的值為c1時,返回Taobao;值為c2時,返回Alipay;值為c3時,返回Aliyun;值為NULL時,返回N/A;其他場景返回Others。
    select
    decode(customer_id,
    'c1', 'Taobao',
    'c2', 'Alipay',
    'c3', 'Aliyun',
    Null, 'N/A',
    'Others') as result
    from sale_detail;
    --等效于如下語句。
    if customer_id = c1 then
    result := 'Taobao';
    elsif customer_id = c2 then
    result := 'Alipay';
    elsif customer_id = c3 then
    result := 'Aliyun';
    ...
    else
    result := 'Others';
    end if;

    返回結(jié)果如下。

    +------------+
    | result     |
    +------------+
    | Others     |
    | Others     |
    | Others     |
    | Taobao     |
    | Alipay     |
    | Aliyun     |
    +------------+

GREATEST

  • 命令格式

    greatest(<var1>, <var2>[,...])
  • 命令說明

    返回輸入?yún)?shù)中最大的值。

  • 參數(shù)說明

    var1var2:必填。BIGINT、DOUBLE、DECIMAL、DATETIME或STRING類型。

  • 返回值說明

    • 返回輸入?yún)?shù)中的最大值。當(dāng)不存在隱式轉(zhuǎn)換時,返回值同輸入?yún)?shù)數(shù)據(jù)類型。

    • NULL為最小值。

    • 當(dāng)輸入?yún)?shù)數(shù)據(jù)類型不相同時,DOUBLE、BIGINT、DECIMAL、STRING之間的比較會轉(zhuǎn)換為DOUBLE類型;STRING、DATETIME的比較會轉(zhuǎn)換為DATETIME類型。不允許其他的隱式轉(zhuǎn)換。

IF

  • 命令格式

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

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

  • 參數(shù)說明

    • testCondition:必填。要判斷的表達(dá)式,BOOLEAN類型。

    • valueTrue:必填。表達(dá)式testCondition為True時,返回的值。

    • valueFalseOrNull:表達(dá)式testCondition為False時,返回的值,可以設(shè)為NULL。

  • 返回值說明

    返回值類型和參數(shù)valueTruevalueFalseOrNull的數(shù)據(jù)類型一致。

  • 示例

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

LEAST

  • 命令格式

    least(<var1>, <var2>[,...])
  • 命令說明

    返回輸入?yún)?shù)中的最小值。

  • 參數(shù)說明

    var :必填。輸入?yún)?shù)值。BIGINT、DOUBLE、DECIMAL、DATETIME或STRING類型。

  • 返回值說明

    • 輸入?yún)?shù)中的最小值。當(dāng)不存在隱式轉(zhuǎn)換時,返回值同輸入?yún)?shù)類型。

    • 當(dāng)有類型轉(zhuǎn)換時,DOUBLE、BIGINT、STRING之間的轉(zhuǎn)換返回DOUBLE類型;STRING、DATETIME之間的轉(zhuǎn)換返回DATETIME類型;DECIMAL、DOUBLE、BIGINT和STRING之間的轉(zhuǎn)換返回DECIMAL類型。不允許其他的隱式類型轉(zhuǎn)換。

    • NULL為最小值。

    • 如果所有參數(shù)值都為NULL,返回結(jié)果為NULL。

  • 示例

    --返回2。
    select least(5, 2, 7);

NULLIF

  • 命令格式

    T nullif(T <expr1>, T <expr2>)
  • 命令說明

    比較expr1expr2的值,二者相等時返回NULL,否則返回expr1

  • 參數(shù)說明

    expr1expr2:必填。任意類型的表達(dá)式。T指代輸入數(shù)據(jù)類型,可以是SQL分析支持的所有數(shù)據(jù)類型。

  • 返回值說明

    返回NULL或expr1

  • 示例

    --返回2。
    select nullif(2, 3);
    --返回NULL。
    select nullif(2, 2);
    --返回3。
    select nullif(3, null);

NVL

  • 命令格式

    nvl(T <value>, T <default_value>)
  • 命令說明

    如果value值為NULL,返回default_value,否則返回value。兩個參數(shù)的數(shù)據(jù)類型必須一致。

  • 參數(shù)說明

    • value:必填。輸入?yún)?shù)。T指代輸入數(shù)據(jù)類型,可以是SQL分析支持的所有數(shù)據(jù)類型。

    • default_value:必填。替換后的值。必須與value的數(shù)據(jù)類型保持一致。

  • 示例

    例如表t_data的3個列分別為c1 stringc2 bigintc3 datetime。表中數(shù)據(jù)如下。

    +----+------------+------------+
    | c1 | c2 | c3 |
    +----+------------+------------+
    | NULL | 20 | 2017-11-13 05:00:00 |
    | ddd | 25 | NULL |
    | bbb | NULL | 2017-11-12 08:00:00 |
    | aaa | 23 | 2017-11-11 00:00:00 |
    +----+------------+------------+

    通過nvl函數(shù)將c1中為NULL的值輸出為00000,c2中為NULL的值輸出為0,c3中為NULL的值輸出為-,命令示例如下。

    select nvl(c1,'00000'),nvl(c2,0),nvl(c3,'-') from nvl_test;
    --返回結(jié)果如下。
    +-----+------------+-----+
    | _c0 | _c1 | _c2 |
    +-----+------------+-----+
    | 00000 | 20 | 2017-11-13 05:00:00 |
    | ddd | 25 | - |
    | bbb | 0 | 2017-11-12 08:00:00 |
    | aaa | 23 | 2017-11-11 00:00:00 |
    +-----+------------+-----+