我有一个包含4个varchar列的mysql表,在某些情况下,这些列可以包含一个数字。我必须将仅包含至少一个字符的列连接成一个字符串,并忽略仅包含数字的列。
例如
aa + 88 + po + a4 会导致 aapoa4
a3a + ww + 11 + ewd 将导致 a3awwewd
答案 0 :(得分:0)
所以基本上你可以将你的问题视为列的连接,如果它们与^\d+$
正则表达式不匹配,否则为空字符串。您可以在MySQL文档中找到有关REGEXP,CONCAT和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
代替,但对我来说这样更清楚。