2016-07-01 3 views
-1

サンプル列パターン:23:4,13:6^12:1^15:3^45:6,99:2,64:1^.....^MySQLのクエリ例に示すように、私は前と後の値を区切る必要がある:(コロン)

注キャップ番号コンマ間が変化してもよいです例えばのための

23:4,13:6^ - 1comma 
^12:1^ - no comma 
^45:6,99:2,64:1^ - 2 commas 

予想される出力:

ColumnA ColumnB 
------------------ 
    23  4 
    13  6 
    12  1 
    15  3 
    45  6 
+1

あなたの予想出力は何ですか?共有する。 – 1000111

+0

カラムa 23,13,12,15,45 カラムb 4,6,1,3,6 – prat

+0

'SUBSTRING_INDEX'関数を見てください。特定の数のデリミタの前後にある文字列の部分を見つけるために使用することができます。 – Barmar

答えて

0

@Barmar

おかげで私は

/* */

SET @VInput = (SELECT REPLACE(REPLACE(REPLACE("23:4,13:6^12:1^15:3^45:6,99:2,64:1^" , ',', ' '), ':', ' '), '^', ' ') FROM TABLE_NAME WHERE CONDITION); 

/*セッションvarible */

をスペースで特殊文字を交換しVaribaleに値を取った解決策を見つけました
SET @VRow := 0; 

/サブストリングのインデックスが

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@VInput, ' ', (@VRow := @VRow + 1) * 2 - 1), ' ', -1) as RESP, SUBSTRING_INDEX(SUBSTRING_INDEX(@VInput, ' ', (@VRow) * 2), ' ', -1) as Count FROM INFORMATION_SCHEMA.`COLUMNS` WHERE @VRow * 2 < CHAR_LENGTH(@VInput) - CHAR_LENGTH(REPLACE(@VInput, ' ', '')); 

/

inotのcoloumnを区切るために感謝のStackOverflow .. :)

0

することはでき単にREPL区切り文字をスペースで区切ります。

SELECT REPLACE(REPLACE(REPLACE(colname, ',', ' '), ':', ' '), '^', ' ') 
FROM yourTable 
+0

このスペースのもので試してみましたが、その後、それをどのように違う列で管理するのか不明な長さの文字列ですか? – prat

+0

これは非常に異なる問題です。 SQLで動的列を作成することは実際には不可能です。動的SQLを作成するストアドプロシージャを使用する必要があります。 – Barmar

+0

誰かがコメントで述べたように、これはクエリ結果を処理する実際のプログラミング言語では簡単になります。次に、配列に分割して処理することができます。 – Barmar

関連する問題