SQL:
  SELECT DISTINCT 
   A1 ,A2, A3,
   A1 || A2 ||  A3  AS A4
  FROM 
   TABLE
 
如果A1,A2,A3 都有值,则出现 A4 (= A1 A2 A3)
如果只有A1有值,则A4为空,
我希望在A1有值的时候,A4 也有值(=A1)

解决方案 »

  1.   

    --用isnull()这样功能的函数,如果为null,用''SELECT DISTINCT 
          A1 ,A2, A3,
          isnull(A1,'') || isnull(A2,'') || isnull(A3,'')  AS A4
    FROM 表名
      

  2.   

    PostgresQL里面没有isnull这样的系统函数,不过可以写一个自定义函数。CREATE OR REPLACE FUNCTION isnull(inputstr "varchar")
    RETURNS "varchar" AS
    $BODY$
    BEGIN
        IF inputstr IS NULL
        THEN
            RETURN '';
        ELSE 
            RETURN inputstr;
        END IF;
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;测试:
    SELECT  isnull('AAA') || isnull(NULL) || isnull('BBB')  AS A4;
       a4
    --------
     AAABBB
    (1 row)
      

  3.   

    你们所谓的ISNULL在PG里为COALESCE,这是SQL标准函数