我有一個包含4個varchar列的mysql表,在某些情況下,這些列可以包含一個數字。我必須將單個字符串連接成只包含至少包含一個字符的列,並忽略僅包含數字的列。MySQL - 如何連接包含至少一個字母字符的列
例如
AA + 88 + PO + A4 將導致 aapoa4
A3A + WW + 11 + EWD 將導致 a3awwewd
我有一個包含4個varchar列的mysql表,在某些情況下,這些列可以包含一個數字。我必須將單個字符串連接成只包含至少包含一個字符的列,並忽略僅包含數字的列。MySQL - 如何連接包含至少一個字母字符的列
例如
AA + 88 + PO + A4 將導致 aapoa4
A3A + WW + 11 + EWD 將導致 a3awwewd
所以基本上你可以看看你的問題,因爲列的級聯,如果它們不匹配^\d+$
正則表達式或空字符串否則。您可能會發現在REGEXP,CONCAT和CASE在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
代替,但對我來說這種方式更清晰。
謝謝你,這是完美的! –
我承認我對你爲什麼需要這樣做有點好奇 – Strawberry
一個想法是用''代替數字,然後忽略長度爲零的字符串。或者使用正則表達式與CASE語句結合使用 – Strawberry
我發現了一個奇怪而醜陋的表格,其中包含四列用於描述對象(不明白爲什麼)。其中一些欄只包含對我來說毫無意義的數字。我必須連接成一個單獨的字段,用逗號分隔,其他字母列。 –