gpt4 book ai didi

mysql - 将匹配的字符串移动到 MySQL 中的末尾

转载 作者:行者123 更新时间:2023-11-29 17:31:20 25 4
gpt4 key购买 nike

我正在做一个GROUP_CONCAT以以下格式显示名称

Lastname1, Firstname1; Lastname2, Firstname2

有时,姓氏还包含括在尖括号中的字符串 - ()。由于这些将显示在连接字符串的中间,因此我尝试将其移至末尾。

到目前为止我的解决方案是这样的:

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。

最佳答案

嗯。 。 。像这样的东西可能会起作用:

GROUP_CONCAT(DISTINCT (CASE WHEN psn.surname LIKE '%(%'
THEN CONCAT(TRIM(SUBSTRING_INDEX(psn.surname, '(', 1)), ', ',
psn.firstname, '('
SUBSTRING_INDEX(psn.surname, '(', -1)
)
ELSE CONCAT(psn.surname, ', ', psn.firstname)
END)
ORDER BY psn.surname, psn.firstname ASC SEPARATOR '; '
) AS contacts

我没有重复order by的表达式。这似乎有点矫枉过正。

关于mysql - 将匹配的字符串移动到 MySQL 中的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50612459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com