Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

specific column name on postgres function return

In postgres I have a custom function that will join first and last name.

  CREATE FUNCTION full_name(u users) RETURNS varchar
  LANGUAGE plpgsql VOLATILE
  AS $$
    BEGIN
      RETURN CONCAT_WS(' ', u.first_name, u.last_name);
    END;
  $$;

It would be nice if I didn't have to set the the name of the column name and it was determined by the function eg.

eg. here I have to say the column name is full_name

SELECT
 full_name(users) as full_name

But it would be nice if it atomically name it full_name

SELECT
full_name(users)

Is this possible to set in a custom function?

like image 927
Andrew WC Brown Avatar asked Jun 12 '26 13:06

Andrew WC Brown


1 Answers

As the function parameter is the name of the table, you don't have to pass it.

You can call it like this:

select users.full_name
from users;

Note that you have to prefix the function name with the table name. You can also use an alias, but you still need the prefix.

select u.full_name
from users u;

In that case the column from the result set will be named full_name (the name of the function)

Btw: you don't need PL/pgSQL for the function. A plain SQL will likely be faster for this. Eespecially when you declare it stable instead of volatile - the it can be inlined and the overhead of calling the function is eliminated.