oralce迁移postgresql或OpenGauss(高斯)数据库规则整理

  1. COSH()

    --Oracle
    SELECT
        COSH(0)
    FROM dual;
    
    
    --输出
       --COSH(0)
    --__________
    --         1
    
    --postgresql  可通过自定义函数实现该方法   
    CREATE OR REPLACE FUNCTION cosh(x double precision) RETURNS double precision AS $$
    BEGIN
      RETURN (EXP(x) + EXP(-x)) / 2;
    END;
    $$ LANGUAGE plpgsql;

  2. NANVL()

    --oracle
    SELECT
        NANVL(1, 2)
    FROM dual;
    
    --输出
       NANVL(1,2)
    _____________
                1
    
    --postgresql 可通过自定义函数实现
    
    CREATE OR REPLACE FUNCTION nanvl(a numeric, b numeric) RETURNS numeric AS $$
    BEGIN
        IF a IS NULL OR a = 'NaN' THEN
            RETURN b;
        ELSE
            RETURN a;
        END IF;
    END;
    $$ LANGUAGE plpgsql;
    
    SELECT nanvl('', 2);

  3. REMAINDER()

    --oracle
    SELECT REMAINDER(-10, 3) FROM dual
    
    
    --postgresql 可使用mod()函数代替
    SELECT mod(-10, 3)
    
  4. SINH()

    --oracle
    SELECT
        SINH(2.0)
    FROM dual;
    
    --postgresql 自定义该函数
    CREATE OR REPLACE FUNCTION sinh(x numeric) RETURNS numeric AS $$
    BEGIN
        RETURN (EXP(x) - EXP(-x)) / 2;
    END;
    $$ LANGUAGE plpgsql;
    SELECT sinh(2.0);
  5. TANH()

    --oracle
    
    SELECT
        tanh(2.0)
    FROM dual;
    
    
    --postgresql 自定义该函数
    
    
    CREATE OR REPLACE FUNCTION tanh(x numeric) RETURNS numeric AS $$
    BEGIN
        RETURN (EXP(x) - EXP(-x)) / (EXP(x) + EXP(-x));
    END;
    $$ LANGUAGE plpgsql;
    
    -- 使用自定义函数计算双曲正切值
    SELECT custom_tanh(2.0); -- 返回数值 0.9640275800758169

  6. NCHR()

    --oracle
    ELECT
        nchr(120)
    FROM dual;
    
    
    --postgresql  使用chr()函数代替
    SELECT chr(120);

  7. NLS_INITCAP(),NLS_LOWER(),NLS_UPPERR()

    -- oracle
    SELECT
        NLS_INITCAP('hello world') "NLS_INITCAP('hello world')"
    FROM dual;
    
    
    SELECT NLS_LOWER('Hello, World') AS lower_text FROM dual;
    
    
    SELECT NLS_UPPER('Hello, World') AS upper_text FROM dual;
    
    
    --postgresql
    
    --使用initcap()函数代替
    SELECT initcap('hello, world') AS initcap_text;
    
    --使用LOWER()函数代替
    SELECT LOWER('Hello, World') AS lower_text;
    
    --使用UPPER()函数代替
    SELECT UPPER('Hello, World') AS upper_text;
    
    

    还有很多函数整理好后会更新上来

猜你喜欢

转载自blog.csdn.net/qq_52875818/article/details/137116567