2016-07-15 4 views
-1

MySqlには、複数のフィールドをデリミタで1つのフィールドにエクスポートするために使用するCONCAT_WSという関数があります。よく働く!デリミタの挿入

データベースには複数のフィールドが格納されていますが、それぞれのフィールドを個別に抽出する必要があるデータがありますが、各フィールドには区切り文字を含める必要があります。私は最も確かに連結を行うことができますが、データに最大100の一意の値が必要な場合は、設定にしばらく時間がかかります。以下は、私が話しているものの例です。

Stored Data 01020304050607      
End Result 01,02,03,04,05,06,07 

Stored Data 01101213 
End Result 01,10,12,13 

上記の機能はMySQLにもありますか?

+1

次に、問題は次のとおりです。データを非常に異なる形式で取得する必要がある場合は、なぜこのようにデータを保存するのですか? – Jocelyn

+0

これを分割するには、ストアドファンクションを作成する必要があります。 –

+0

これを分割している間は、CSVでデータを保存しないでください。新しい行を作成します。データの混乱から生き残るためにfind_in_setとgroup_concatを毎日使用していると、あなたはおそらく何か間違っているでしょう。その場合は、[ジャンクションテーブル](http://stackoverflow.com/a/32620163)を参照してください。 1対多、対多対多、同じコンセプト。 CSVデータは保存しないでください。 – Drew

答えて

0

私はmysqlに精通していませんが、正規表現関数が役に立ちそうな場所の前にこのような質問があります。 mysqlのサポートが弱いため、Oracleのような正規表現関数を使用できるユーザ定義関数があります。ここを参照してください:https://github.com/hholzgra/mysql-udf-regexp

だからあなたはこのような何かを行うことができます:

select trim(TRAILING ',' FROM regexp_replace(your_column, '(.{2})', '\1,')) 
from your_table; 

これは、すべての2文字が最後のものをオフにチョップカンマを追加します。たぶん、これはあなたにいくつかのアイデアを与えるでしょう。