2016-08-23 44 views
0

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

例如

AA + 88 + PO + A4                  将导致          aapoa4

A3A + WW + 11 + EWD        将导致          a3awwewd

+1

我承认我对你为什么需要这样做有点好奇 – Strawberry

+0

一个想法是用''代替数字,然后忽略长度为零的字符串。或者使用正则表达式与CASE语句结合使用 – Strawberry

+0

我发现了一个奇怪而丑陋的表格,其中包含四列用于描述对象(不明白为什么)。其中一些栏只包含对我来说毫无意义的数字。我必须连接成一个单独的字段,用逗号分隔,其他字母列。 –

回答

0

所以基本上你可以看看你的问题,因为列的级联,如果它们不匹配^\d+$正则表达式或空字符串否则。您可能会发现在REGEXPCONCATCASE在MySQL的文档的多个文档,但下面有代码,这可能会导致你要实现什么:

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代替,但对我来说这种方式更清晰。

+0

谢谢你,这是完美的! –

相关问题