2017-08-06 14 views
-2

コンマ区切りの配列をmysqlデータベースの別のコンマ区切りの配列に置き換える方法を知りたいと思います。データベースの挿入メソッドからの値を取得せずに置き換えるメソッドがあります。mysqlデータベースのコンマ区切り配列の置き換え方法

例:私は5,8,9にこの3,2,6値を変更したい1,3,2,6,3,4

XテーブルY列は、このカンマ区切りの配列を持っています。最後に、データベース内の配列は1,5,8,9,3,4である必要があります。

私はmysqlデータベースからデータを取得せずに、また与えないで意味する値を与えずに、3,2,6を使用したいと思います。つまり、配列の2番目の値からこの配列を更新します。可能でない場合は、別の方法を教えてください。

+2

悪いデザインパターンのようです。カンマ区切りの値を格納することは、一般的には悪い考えです。 – Qirel

+0

あなたは何を提案しますか – ind

+0

https://stackoverflow.com/q/3653462/4535200 – Qirel

答えて

0

もちろん、カンマで区切られた配列は、データベースに関する限り文字列です。そうすれば、あなたが望む変更を加えることができます。

UPDATE X SET Y = REPLACE(Y,'3,2,6','5,8,9') WHERE Y = '1,3,2,6,3,4' 

一般的に単一のSQL列にカンマ区切りを入れて、話して、それが難しいこれらの列を更新する、または任意のSQLに優しい方法で、値を検索することができます。

+0

しかし、このコードではY値を取得したい "Y = '1,3,2,6,3,4'" – ind

0

残念なことに、MySQLにはREGEXP_REPLACEというような機能がないため、コンマ区切りのリストを含む文字列を操作することは非常に面倒な作業です。

あなたの特定のケースについては、これを使用することができます

UPDATE X SET Y = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', Y, ','), ',<SRC>,', ',<DST>,') ) WHERE ...;

あなたは結果を希望得るよ、それぞれ自分の3,2,65,8,9<SRC><DST>を交換します。

+0

私はこれのためのコードを更新します。 3,2,6を使わずに。配列の2番目の値から更新を与える方法 – ind

+0

私はあなたの質問を理解しているか分からない – Styx