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

SQLでコンマ区切りの文字列を合計するにはどうすればよいですか?

    多大な努力を払えば、これを行うことができます。ただし、実際には、これはデータを保存するための非常に非常に悪い方法です。

    時々、フォーマットが私たちの管理下にないデータを使用しなければならないという精神で:

    select id,
           (substring_index(value, ',', 1) +
            substring_index(substring_index(concat(value, ',0'), ',', 2), ',', -1) +
            substring_index(substring_index(concat(value, ',0'), ',', 3), ',', -1) +
            substring_index(substring_index(concat(value, ',0'), ',', 4), ',', -1) +
            substring_index(substring_index(concat(value, ',0'), ',', 5), ',', -1)
           ) as thesum
    from t;
    

    substring_index()に呼び出されるネスト 文字列のn番目の値をフェッチします。 concat(value, ',0') 式よりも値が少ない場合を処理することです。この場合、ネストされたsubstring_index() リスト内のアイテム数よりも大きいnの値の最後の値を返します。 0を連結する リストに追加すると、これが合計に影響を与えないことが保証されます。

    SQLフィドルはこちら です。 。



    1. SQLServerの関数ベースのインデックス

    2. Transactionscopeスロー例外このプラットフォームは、接続オブジェクトを開いている間、分散トランザクションをサポートしていません

    3. PostgreSQL9.0をWindowsサービスとして登録して実行します

    4. T-SQLの空のステートメント