Как сделать простой вид сортировки для значений столбцов
при объединении двух или более столбцов в один столбец в выборке (похоже, мало связанных вопросов, но не совсем то, что я хочу, и слишком сложные ответы)?
Рассмотрим следующий сценарий:
Имея стол вроде:
DROP TABLE t1;
CREATE TABLE t1 (
name varchar,
name2 varchar
);
с данными:
INSERT INTO t1 VALUES
('N1', 'N2')
,('N2', 'N1')
;
Выбор как:
SELECT (name||name2) AS id, * from t1;
Результаты в:
id | name | name2
------+------+-------
N1N2 | N1 | N2
N2N1 | N2 | N1
Я бы хотел, чтобы последняя строка также была N1N2
вместо N2N1
. Итак, что мне нужно, это что-то вроде:
SELECT (concat(sort(name,name2))) AS id, * from t1 ;
должно привести к:
id | name | name2
------+------+-------
N1N2 | N1 | N2
N1N2 | N2 | N1
, поэтому, если SET значений столбцов name
& name2
одинаков, то id
совпадает.
ПРИМЕЧАНИЕ : Я понимаю, что этого можно было бы достичь, создав функцию / процедуру, но я хочу знать, есть ли более стандартный Postgres способ сделать это. Это означает, что я хотел бы избежать установки каких-либо расширений или около того, но не так, чтобы они работали также в Oracle или MSSQL.