Я пытаюсь разобраться, если это возможно, позвольте мне привести пример. Было бы здорово, если бы вы могли направить меня в правильном направлении, пожалуйста.
Table = names
--------------------
Marks & Spencer
Marks & Spencer
marks & spencer
То, что я пытаюсь сделать, это вернуть различные значения, где я преобразовал все знаки & и изменил их в верхний регистр.
Итак, мой запрос:
SELECT regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi') AS name FROM names GROUP BY names;
Однако я хотел бы также вернуть одно из исходных значений, не имеет значения, какое из них, но я хочу, чтобы была возвращена только 1 строка, например
Result
----------------
name original
------------------------
MARKS&SPENCER Marks & Spencer
Возможно ли это? Потому что на данный момент мне возвращают следующее:
Result
----------------
name original
------------------------
MARKS&SPENCER Marks & Spencer
MARKS&SPENCER Marks & Spencer
MARKS&SPENCER marks & spencer
Спасибо за чтение, буду очень признателен за помощь.
==========
EDIT
Запрос, который я использую для получения вышеуказанного результата:
SELECT names.name, T.result FROM names
INNER JOIN
(
SELECT DISTINCT regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi') AS result FROM names
) AS T
ON regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi')=T.result
GROUP BY T.result, names.name
ORDER BY T.result ASC
Я использую PostgreSQL, кстати, который может сделать больше, чем MySQL, если что-то меняет?