2016-08-23 17 views
0

4つのvarcharカラムを持つmysqlテーブルがありますが、場合によってはこれらのカラムに数値を含めることもできます。少なくとも1つの文字を含む列だけを1つの文字列に連結し、数字のみを含む列は無視しなければなりません。              をもたらすMySQL - 少なくとも1つのアルファベット文字を含む列を連結する方法

AA + 88 + PO + A4               aapoa4

A3A + WW + 11 + EWD                   だから基本的に、彼らは^\d+$と一致しない場合は、列の連結として、あなたの問題を見てもよい

+1

私はなぜあなたがこれを行う必要があるのか​​少し不思議だと認めます。 – Strawberry

+0

1つのアイデアは、数字を ''で置き換えてから、ゼロ長の文字列を無視することです。または、正規表現をCASE文と組み合わせて使用​​してください。 – Strawberry

+0

オブジェクトの説明のために4つの列を含む不思議で醜い表が見つかりました。なぜか分かりません。これらの列の中には、何も私に意味のない数字だけが含まれています。私はカンマで区切られた単一のフィールドに、他のアルファベットの列を連結する必要があります。 –

答えて

0

をa3awwewdなります正規表現または空の文字列。あなたは、REGEXP上のMySQLのドキュメントでCONCATCASEをより多くのドキュメントを見つけるかもしれませんが、以下のコードがあり、あなたが達成したいものにあなたを導くかもしれない:

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

ありがとう、それは完璧です! –

関連する問題