Повторное использование псевдонима для выражения в postgresql - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь сделать это:

select first_name || ' ' || last_name as full_name, Length(full_name) as len from customer order by len

Это невозможно;

столбец "полное_имя" не существует

Итак , Я должен сделать это:

select first_name || ' ' || last_name as full_name, Length(first_name || ' ' || last_name) as len from customer order by len

Означает ли это, sql движок должен вычислить выражение 'first_name || '' || last_name 'два раза?

1 Ответ

1 голос
/ 02 марта 2020

Как вы видите, то, что вы хотите сделать, невозможно. Вместо этого вы можете использовать боковое соединение для вычисления значений в предложении FROM:

select v.full_name, Length(v.full_name) as len
from customer c cross join lateral
     (values (first_name || ' ' || last_name)
     ) v(full_name)
order by len;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...