MySQL - 如何连接至少包含一个字母字符的列

MySQL - How to concatenate columns that contain at least one alphabetic character

我有一个包含 4 个 varchar 列的 mysql table,在某些情况下,这些列可以包含一个数字。我必须将仅包含至少一个字符的列连接成一个字符串,并忽略仅包含数字的列。

例子

aa + 88 + po + a4 将结果 aapoa4

a3a + ww + 11 + ewd 将得到 a3awwewd

所以基本上,如果列不匹配 ^\d+$ 正则表达式或空字符串,您可能会将您的问题视为列的串联。您可能会在 MySQL 文档中找到更多关于 REGEXP, CONCAT and CASE 的文档,但下面有代码,可能会引导您实现您想要实现的目标:

SELECT
    CONCAT(
    CASE WHEN a REGEXP '^[[:digit:]]+$' THEN '' ELSE a END,
    CASE WHEN b REGEXP '^[[:digit:]]+$' THEN '' ELSE b END,
    CASE WHEN c REGEXP '^[[:digit:]]+$' THEN '' ELSE c END,
    CASE WHEN d REGEXP '^[[:digit:]]+$' THEN '' ELSE d END) as result
FROM your_table;

当然你可以用NOT REGEXP代替,但对我来说这样更清楚。