1

列があり、複数の列を持つクエリを作成したいと考えています。

たとえば、テスト列があります。

この列のデータは次のようになります。

record1 => **option1|value1;option2|value2**
record2 => **option3|value3**
record3 => **option3|value3;option1|value1;option2|value2;option4|value4**

オプションと値の数は未定義です。

この1つのテスト列を次のようなオプションの数に分割したい:

option1   option2   option3  option4
'value1'  'value2'  'value3'  
                    'value3'
'value1'  'value2'  'value3' 'value4'

このような私のテーブル:

    id  name    options
    1   name    age|12;color|red;active|yes;car|no
    2   name    age|15;member|yes

ありがとう!

4

1 に答える 1

1

変数名と検索する値を受け取り、必要に応じて行や ID などを返すことができる、ユーザー定義関数と呼ばれるカスタム MySQL 関数を作成できます。

その関数では、読み取り専用カーソルのすべての行をループし、SUBSTRING_INDEX()を使用して値を個別に取得し、一致を確認する必要があります。

さらにサポートが必要な場合は、お知らせください。

詳細については、MySQL の文字列関数のマニュアルを参照してください

関数の記述に役立つ可能性がある上記のリンクからのユーザー コメントからの抜粋: これにより、IP アドレス (「abcd」) が 4 つのそれぞれのオクテットに分割されます。

SELECT
`ip` , 
SUBSTRING_INDEX( `ip` , '.', 1 ) AS a,
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', 2 ),'.',-1) AS b, 
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', -2 ),'.',1) AS c,
SUBSTRING_INDEX( `ip` , '.', -1 ) AS d
FROM log_table
于 2012-06-11T18:31:05.143 に答える