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

时间:2016-08-23 22:22:04

标签: mysql regex concatenation concat

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

例如

aa + 88 + po + a4 会导致 aapoa4

a3a + ww + 11 + ewd 将导致 a3awwewd

1 个答案:

答案 0 :(得分:0)

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

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代替,但对我来说这样更清楚。