SELECT (column_no::text || ',' || name || ',' || phone::text) AS comma_separated
FROM master_table WHERE id = 1
編集 :
あなたのコメントの後、関数が必要だと思います。全体のアイデアに同意しない場合でも (アプリケーション層でそれを行う方がはるかに優れています)、ここにあなたが求めているものを作成する関数があります。それは醜いです。
CREATE OR REPLACE FUNCTION GetCommaSeparatedValues(PAR_table text, PAR_where_clause text DEFAULT '') RETURNS TABLE (
comma_separated_values text
) AS $$
DECLARE
REC_columns record;
VAR_query text;
BEGIN
VAR_query := '';
FOR REC_columns IN SELECT column_name FROM information_schema.columns WHERE table_schema = current_schema AND table_name = PAR_table LOOP
IF VAR_query <> '' THEN
VAR_query := VAR_query || ' || '','' || ';
END IF;
VAR_query := VAR_query || ' CASE WHEN ' || REC_columns.column_name || ' IS NULL THEN ''null'' ELSE ' || REC_columns.column_name || '::text END';
END LOOP;
VAR_query := 'SELECT ' || VAR_query || ' FROM ' || PAR_table::regclass || ' ' || PAR_where_clause;
RETURN QUERY EXECUTE VAR_query;
END;
$$ LANGUAGE plpgsql;
使用法:
SELECT * FROM GetCommaSeparatedValues('table1');
また
SELECT * FROM GetCommaSeparatedValues('table2', 'WHERE id = 1');