ホームページ >データベース >mysql チュートリアル >SQL でカンマ区切りの VARCHAR 列の値を分割するにはどうすればよいですか?
SQL での VARCHAR 列値の分割
SQL では、VARCHAR データ型は可変長の文字列を格納します。 VARCHAR 列を扱う場合、列の値を複数の個別の値に分割する必要がある場合があります。
次のような SQL SELECT ステートメントがあるとします。
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448
このステートメントは、すべての値を返します。 AD_Reference_ID 列が 1000448 に等しい、AD_Ref_List テーブルの Value 列の値。結果は次のようになります。 this:
Value |
---|
CO,VO |
この結果では、Value 列にカンマで区切られた値のリストが含まれています。結果をさらにフィルタリングするには、次のような値を個々の行に分割することができます。
Value |
---|
CO |
VO |
これを実現する 1 つの方法は、次のように IN 演算子を使用することです。
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448 AND AD_Ref_List.Value IN (SELECT xx_insert.XX_DocAction_Next FROM xx_insert WHERE xx_insert_id = 1000283 ) ;
ただし、Oracle は値のリストを個々の値ではなく単一の文字列として扱うため、このクエリは行を返さない場合があります。これを修正するには、次の手法を使用できます。
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
このクエリは、LIKE 演算子を使用して、AD_Ref_List テーブルの値が xx_insert テーブルの値のリストの部分文字列であるかどうかを確認します。これにより、[値] 列の各値が個別の行として表示され、目的の結果が返されます。
以上がSQL でカンマ区切りの VARCHAR 列の値を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。