sql >> データベース >  >> RDS >> Mysql

SQLは値を複数の行に分割します

    1から分割する最大フィールドまでの数値を含む数値テーブルを作成できる場合は、次のようなソリューションを使用できます。

    select
      tablename.id,
      SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name
    from
      numbers inner join tablename
      on CHAR_LENGTH(tablename.name)
         -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
    order by
      id, n
    

    フィドルこちら をご覧ください。 。

    テーブルを作成できない場合、解決策は次のようになります。

    select
      tablename.id,
      SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name
    from
      (select 1 n union all
       select 2 union all select 3 union all
       select 4 union all select 5) numbers INNER JOIN tablename
      on CHAR_LENGTH(tablename.name)
         -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
    order by
      id, n
    

    フィドルの例は、こちら です。 。



    1. Statement.setFetchSize(nSize)メソッドはSQL Server JDBCドライバーで実際に何をしますか?

    2. あなたのビジネスのためのユーザーフレンドリーなデータベースを選択する方法

    3. OracleでUTF8文字セットを構成するにはどうすればよいですか?

    4. 行1、列4(年)のバルクロードデータ変換エラー(指定されたコードページのタイプの不一致または無効な文字)