2016-08-23 46 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

謝謝你,這是完美的! –

相關問題