2017-03-14 20 views
0

私は私は2セットのフィールドを有し、nは各セットにおける値フィールドの数形式SQLクエリ更新列値倍(MySQLの)

"`set1:val1,val2|set2:val3`" 

の値を有するdataという名前のテキスト列を有しています。私はこれが正規化されていない、またはデータを保存するための適切なアプローチではないことを知っていますが、スキーマを変更することはできません。私は実際にSQLクエリの専門家ではない

今、私は、各セットのための2つの値を指定して、単一のクエリを必要とするが、私は

"`set1:val1,val2,val4|set2:val3,val5`" 

ように私の最後のデータフィールドを必要とするval4 and val5を言うので、上記の更新クエリを必要とします。各セットに対して常に2つの値しか得られず、既存の設定値を追加する必要があることに注意してください。

+0

にあなたの質問が、私には明確ではないことを変更するに醜いソリューションです...適切なデータサンプルを追加して、期待どおりの結果を得ようとしてください(そしてデータに適切なフォーマットを使用してください) – scaisEdge

+0

あなたはそれを連結することができます –

答えて

1

これは醜い問題

UPDATE table 
SET data = CONCAT(REPLACE(data,'|',',val4|'), ',val5') 
WHERE data = '...' 

REPLACE操作がset1:val1,val2,val4|set2:val3からset1:val1,val2|set2:val3変更し、CONACT操作はset1:val1,val2,val4|set2:val3,val5