2017-04-03 5 views
0

レッツセパレーターを追加し、私はこのテーブルを持っているはCONCAT_WSを使用することが可能とされている場合にのみ値ではありません空

id a  b 
1 data 1234 
2 data  

私は何のデータは、セパレーターを追加していないしていない場合、セパレータ(しかし)とCONCATしたいと言います。

私は

UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '1' 

をすれば、私が期待される1234年を取得するには、b

であるnewDataが、IIは

UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '2' 

を行う私は(bで、あるnewDataを得る(しかし、私はあるnewDataをしたいですセパレータなし))。

これを行う方法はありますか?

答えて

1

あなたはこの1つのメイトを試すことができます。

# [A] sample result set for checking 
SELECT 
    `a`, `b`, 
    IF(
     (`a` IS NOT NULL AND `a` != '') 
     AND (`b` IS NOT NULL AND `b` != ''), 
     CONCAT_WS(',', `a`, `b`), 
     REPLACE(CONCAT_WS(',', `a`, `b`), ',', '') 
    ) `result` 
FROM `table` 
WHERE `id` IN (1, 2); 

結果はあなたが必要なものを満たし[A]に設定した場合は、更新クエリ[B]


を使用して、スクリプトを続行することができます

# [B] process query for the new values 
UPDATE `table` 
SET `b` = IF(
    (`a` IS NOT NULL AND `a` != '') 
    AND (`b` IS NOT NULL AND `b` != ''), 
    CONCAT_WS(',', `a`, `b`), 
    REPLACE(CONCAT_WS(',', `a`, `b`), ',', '') 
) 
WHERE `id` IN (1, 2); 

私は助けてくれるでしょう、歓声!

+0

ありがとうございます、それは魅力的でした;) –

関連する問題