1

私はこのクエリを持っています:-

 select col_str,
 getVal,another_str,resultVal_str from tablename

次のような結果が得られます。

 col_str                                        getVal   another_str              
'11,12,33,54,1,44'                              '12'    '9,5,4,8,7'               
'11,12,33,54,1,44,10,12,11,12,12'               '44'    '9,5,4,8,7,6,3,5,2,4,2'   
'11,12,33,54,1,44'                              '999'   '9,5,4,8,7,4'             
'11,12,33'                                      '0'     '9,5,4'                   
-----                                           ----      -----                   
-----                                           ----      -----                   
-----                                           ----      -----   

col_str,getVal,another_strはテーブルから取得され、列resultVal_strは残りの 3 つの列に基づいて計算したい、Logic for resultVal_str-

最初のレコードのgetValcol_strが 12 で、位置番号 2 に 12 があることを確認してから、位置番号 2another_strが 5 であるresultVal_strことを確認します。下記参照:

col_str                                        getVal   another_str               resultVal_str
'11,12,33,54,1,44'                              '12'    '9,5,4,8,7'                  5
'11,12,33,54,1,44,10,12,11,12,12'               '44'    '9,5,4,8,7,6,3,5,2,4,2'      6
'11,12,33,54,1,44'                              '999'   '9,5,4,8,7,4'                0
'11,12,33'                                      '0'     '9,5,4'                      0
-----                                           ----      -----                     ---
-----                                           ----      -----                     ---
-----                                           ----      -----                     ---

resultVal_str上記のように結果を取得して次の列を追加するにはどうすればよいですか?

4

1 に答える 1

0

getValまず、関数を使用して col_str 内の位置を見つける必要がありFIND_IN_SETます。

位置を取得したら、関数を次のように使用してresultVal同じ場所から見つけることができます。another_strSUBSTRING_INDEX

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(another_str, 
                       ",", (FIND_IN_SET(getVal, col_str))), 
                       ",", - 1) AS resultVal_str
FROM tablename;

テスト:

SET @getVal = '12', @col_str = '11,12,33,54,1,44', @another_str = '9,5,4,8,7';

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(@another_str, ",", (FIND_IN_SET(@getVal, @col_str))), ",", - 1) AS resultVal_str;
于 2012-07-25T06:52:42.203 に答える