zoukankan      html  css  js  c++  java
  • PostgreSQL之SQL语法(三)调用函数

      PostgreSQL允许带有命名参数的函数被使用位置命名记号法调用。命名记号法对于有大量参数的函数特别有用,因为它让参数和实际参数之间的关联更明显和可靠。在位置记号法中,书写一个函数调用时,其参数值要按照它们在函数声明中被定义的顺序书写。在命名记号法中,参数根据名称匹配函数参数,并且可以以任何顺序书写。对于每一种记法,还要考虑函数参数类型的效果。用例如下:

    CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false)
    RETURNS text
    AS
    $$
     SELECT CASE
            WHEN $3 THEN UPPER($1 || ' ' || $2)
            ELSE LOWER($1 || ' ' || $2)
            END;
    $$
    LANGUAGE SQL IMMUTABLE STRICT;

      函数concat_lower_or_upper有两个强制参数,ab。此外,有一个可选的参数uppercase,其默认值为falseab输入将被串接,并且根据uppercase参数被强制为大写或小写形式

    使用位置记号

    SELECT concat_lower_or_upper('Hello', 'World');
     concat_lower_or_upper 
    -----------------------
     hello world
    (1 row)

    使用命名记号

      在命名记号法中,每一个参数名都用=> 指定来把它与参数表达式分隔开。使用命名记号法的一个优点是参数可以用任何顺序指定

    SELECT concat_lower_or_upper(a => 'Hello', b => 'World', uppercase => true);
     concat_lower_or_upper 
    -----------------------
     HELLO WORLD
    (1 row)
    
    SELECT concat_lower_or_upper(a => 'Hello', uppercase => true, b => 'World');
     concat_lower_or_upper 
    -----------------------
     HELLO WORLD
    (1 row)

    使用混合记号

    SELECT concat_lower_or_upper('Hello', 'World', uppercase => true);
     concat_lower_or_upper 
    -----------------------
     HELLO WORLD
  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/ryjJava/p/14320830.html
Copyright © 2011-2022 走看看