Я делаю GROUP_CONCAT
для отображения имен в формате
Lastname1, Firstname1; Lastname2, Firstname2
В некоторых случаях lastname
также содержит строки, заключенные в изогнутые скобки - (
и )
.Так как они будут отображены в середине объединенной строки, я пытаюсь переместить ее в конец.
Мое решение до сих пор таково:
GROUP_CONCAT(
DISTINCT
CASE
WHEN UPPER(psn.surname) LIKE '%INACTIVE%' THEN CONCAT(TRIM(REPLACE(psn.surname, '(Inactive)', '')), ', ', psn.firstname, ' (Inactive)')
ELSE CONCAT(psn.surname, ', ', psn.firstname)
END
ORDER BY
CASE
WHEN UPPER(psn.surname) LIKE '%INACTIVE%' THEN CONCAT(TRIM(REPLACE(psn.surname, '(Inactive)', '')), ', ', psn.firstname, ' (Inactive)')
ELSE CONCAT(psn.surname, ', ', psn.firstname)
END
ASC
SEPARATOR '; '
) AS contacts
Пока это работает, ноон ищет только конкретную строку, бывают также случаи, когда строка в изогнутых скобках не Inactive
, и я не хочу жестко кодировать все из них.
Так что в основном, как мне двигатьсястрока, заключенная в изогнутые скобки до конца строки.Я думаю, что regex
является лучшим решением этой проблемы, но я не знаю, как использовать регулярные выражения.