我在做一件事 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
是这个问题的最佳解决方案,但我不知道如何使用regex。
1条答案
按热度按时间ttvkxqim1#
嗯。像这样的方法可能有用:
我没有重复这个表达式
order by
. 这似乎太过分了。