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

Oracle兼容函數(shù)

Hologres從V1.3版本開始,通過增加orafce擴展包,引入Oracle兼容函數(shù)。本文為您介紹Oracle內(nèi)置函數(shù)在Hologres中的使用方法及支持的函數(shù)詳情。

安裝Oracle

在使用Oracle之前,需要Superuser在數(shù)據(jù)庫內(nèi)執(zhí)行以下語句安裝擴展包才可以正常使用。一個數(shù)據(jù)庫只需執(zhí)行一次即可,如果創(chuàng)建新的數(shù)據(jù)庫,還需要再次執(zhí)行如下語句。

-- 加載orafce插件
create extension if not exists orafce; 
-- 卸載orafce插件
DROP EXTENSION orafce;    
說明

加載orafce插件時會自動創(chuàng)建多個Schema來代替Oracle中的Package,分別為dbms_alertdbms_assertdbms_outputdbms_pipedbms_randomdbms_utilityoracleplunitplvchrplvdateplvlexplvstrplvsubstutl_file。在您安裝Oracle前,請確保您的數(shù)據(jù)庫中沒有同名Schema,否則會加載失敗。

Oracle函數(shù)

Hologres已支持的Oracle函數(shù)列表如下。

  • Date函數(shù)

    函數(shù)名稱

    描述

    用例

    結(jié)果

    add_months(day date, value int)

    返回第一個月份參數(shù)加上第二個月份參數(shù),返回類型為DATE。

    SELECT add_months(current_date, 2);

    2022-05-21

    oracle_last_day(value date)

    返回該日期所在月份的最后一天,返回類型為DATE。

    SELECT oracle_last_day('2022-05-01');

    2022-05-31

    next_day(value date, weekday text)

    返回開始日期后的下一個星期幾所在的日期。參數(shù)一:開始的日期。參數(shù)二:包含星期幾的英文字符串,如Friday。

    SELECT next_day('2022-05-01', 'FRIDAY');

    2022-05-06

    next_day(value date, weekday integer)

    返回開始日期后的下一個星期幾所在的日期。參數(shù)一:開始的日期。參數(shù)二:星期幾的數(shù)字,取值為1到7,1為星期日,2為星期一,以此類推。

    • SELECT next_day('2022-05-01', 1);
    • SELECT next_day('2022-05-01', 2);
    • 2022-05-08

    • 2022-05-02

    months_between(date1 date, date2 date)

    返回date1和date2之間的月數(shù)。如果date1晚于date2,結(jié)果為正。如果date1早于date2,結(jié)果為負(fù)。

    • SELECT months_between('2022-01-01', '2021-11-01');
    • SELECT months_between('2021-11-01', '2022-01-01');
    • 2

    • -2

    trunc(value timestamp with time zone, fmt text)

    返回被截取的時間。參數(shù)一:要被截斷的timestamp。參數(shù)二:應(yīng)用于截斷的度量單位。Y:截斷成日期年份的第一天。Q:返回季度的第一天。

    • SELECT TRUNC(current_date,'Y');
    • SELECT TRUNC(current_date,'Q');
    • 2022-01-01

    • 2022-01-01

    trunc(value timestamp with time zone)

    返回被截取的時間,默認(rèn)截斷時分秒。

    SELECT TRUNC('2022-03-01'::timestamp);

    2022-03-01 00:00:00

    round(value timestamp with time zone, fmt text)

    將timestamp圓整到最近的unit_of_measure(日,周等)。

    SELECT round('2022-02-22 13:11:22'::timestamp, 'YEAR');

    2022-01-01 00:00:00

    round(value timestamp with time zone)

    默認(rèn)圓整到天。

    SELECT round('2022-02-22 13:11:22'::timestamp);

    2022-02-23 00:00:00

    round(value date, fmt text)

    參數(shù)類型為date。

    • SELECT round(TO_DATE('27-OCT-00','DD-MON-YY'), 'YEAR');
    • SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'), 'YEAR');
    • 2001-01-01

    • 2000-01-01

    round(value date)

    參數(shù)類型為date。

    SELECT round(TO_DATE('27-FEB-00','DD-MON-YY'));

    2000-02-27

  • String函數(shù)

    函數(shù)名稱

    描述

    用例

    結(jié)果

    instr(str text, patt text, start integer, nth integer)

    在一個字符串中搜索一個substring,若搜索到則返回substring在字符串中位置,若沒有搜索到,則返回0。start:搜索的起始位置。nth:搜索第幾次出現(xiàn)的位置。

    • SELECT instr('Hologres', 'o',1,2);
    • SELECT instr('Hologres', 'o',1,1);
    • 4

    • 2

    instr(str text, patt text, start integer)

    未提供nth參數(shù),默認(rèn)是第一次出現(xiàn)的位置。

    SELECT instr('Hologres', 'o',4);

    4

    instr(str text, patt text)

    未提供start參數(shù),默認(rèn)從頭開始搜索。

    SELECT instr('Hologres', 'o');

    2

    plvstr.rvrs(str text, start integer, end integer)

    對輸入字符串str從start位置到end位置進行逆序。

    SELECT plvstr.rvrs('Hologres', 5,6);

    rg

    plvstr.rvrs(str text, start integer)

    對輸入字符串str從start位置到字符串結(jié)束進行逆序。

    SELECT plvstr.rvrs('Hologres', 4);

    sergo

    plvstr.rvrs(str text)

    逆序整個字符串。

    SELECT plvstr.rvrs('Hologres');

    sergoloH

    substr(str text, start integer)

    從start字符開始到字符串結(jié)束,獲取輸入字符串str的子串。

    • SELECT substr('Hologres', 1);
    • SELECT substr('Hologres', 4);
    • Hologres

    • ogres

    substr(str text, start integer, len integer)

    從start字符開始,獲取長度為len字符的輸入字符串str的子串。

    • SELECT substr('Hologres', 5, 5);
    • SELECT substr('Oracle函數(shù)', 5, 5);
    • gres

    • le函數(shù)

  • 其他函數(shù)

    函數(shù)名稱

    描述

    用例

    結(jié)果

    listagg(str text)

    將文本值聚合為一個字符串。

    SELECT listagg(t) FROM (VALUES('holo'), ('gres')) as l(t);

    hologres

    listagg(str text, str text)

    將文本值聚集成一個串,第二個參數(shù)執(zhí)行了分割符。

    SELECT listagg(t, '.') FROM (VALUES('holo'), ('gres')) as l(t);

    holo.gres

    concat(str text, str text)

    將兩個字符串拼接在一起。

    SELECT concat('holo','gres');

    hologres

    • concat(str text, anyarray)

    • concat(anyarray, str text)

    • concat(anyarray, anyarray)

    拼接任意類型的數(shù)據(jù)。

    • SELECT concat('hologres', 123);
    • SELECT concat(123, 123);
    • SELECT concat(current_date, 123);
    • hologres123

    • 123123

    • 2022-03-21123

    • nanvl(num real, num real)

    • nanvl(num decimal, num decimal)

    如果第一個參數(shù)為數(shù)值類型,則返回第一個參數(shù);如果不為數(shù)值類型,則返回第二參數(shù)。

    • SELECT nanvl('NaN', 1.1);
    • SELECT nanvl('1.2', 1.1);
    • 1.1

    • 1.2

    bitand(num bigint, num bigint)

    將兩個整型的二進制進行與操作,并返回與之后的結(jié)果,只輸出一行。

    • SELECT bitand(1,3);
    • SELECT bitand(2,6);
    • SELECT bitand(4,6);
    • 1

    • 2

    • 4

    nvl2(anyelement, anyelement, anyelement)

    如果第一個參數(shù)不為null,那么返回第二個參數(shù);如果第一個參數(shù)為null,則返回第三個參數(shù)。

    • SELECT nvl2(null, 1, 2);
    • SELECT nvl2(0, 1, 2);
    • 2

    • 1

    lnnvl(boolean)

    如果參數(shù)為null或者false,則返回true;如果為true,則返回false。

    • SELECT lnnvl(null);
    • SELECT lnnvl(false);
    • SELECT lnnvl(true);
    • t

    • t

    • f

    sinh(num double precision)

    雙曲正弦值。

    SELECT sinh(0.1);

    0.100166750019844

    tanh(num double precision)

    雙曲正切值。

    SELECT tanh(3);

    0.995054753686731

    cosh(num double precision)

    雙曲余弦值。

    SELECT cosh(0.2);

    1.02006675561908

    decode(expression, value, return [,value,return]... [, default])

    在表達式中尋找一個搜索值,搜索到則返回指定的值;如果沒有搜索到,返回默認(rèn)值。

    CREATE TABLE t1(id int, name varchar(20));
    INSERT INTO t1 values(1,'alibaba');
    INSERT INTO t1 values(2,'hologres');
    • SELECT decode(id, 1, 'alibaba', 2, 'hologres', 'not found') from t1;
    • SELECT decode(id, 3, 'alibaba', 4, 'hologres', 'not found') from t1;
    • hologres
      alibaba
    • not found
      not found

    dump(anyelement)

    返回一個文本值,該文本中包含第一個參數(shù)的數(shù)據(jù)類型代碼、以字節(jié)計的長度和內(nèi)部表示。

    SELECT dump('hologres');

    Typ=25 Len=12: 48,0,0,0,104,111,108,111,103,114,101,115

    dump(anyelement, num integer)

    第二個參數(shù)表示返回文本值內(nèi)部表示的進位制。

    • SELECT dump('hologres', 10);
    • SELECT dump('hologres', 16);
    • Typ=25 Len=12: 48,0,0,0,104,111,108,111,103,114,101,115

    • Typ=25 Len=12: 30,0,0,0,68,6f,6c,6f,67,72,65,73

    nlssort(str text, str text)

    指定排序規(guī)則的排序數(shù)據(jù)函數(shù)。

    創(chuàng)建表格并插入數(shù)據(jù)。

    CREATE TABLE t1 (name text); INSERT INTO t1 VALUES('Anne'), ('anne'), ('Bob'), ('bob');
    • SELECT * FROM t1 ORDER BY nlssort(name, 'en_US.UTF-8');
    • SELECT*FROM t1 ORDER BY nlssort(name, 'C');
    • anne
      Anne
      bob
      Bob
    • Anne
      Bob
      anne
      bob