ホームページ >データベース >mysql チュートリアル >MySQL 4 でストアド プロシージャを使用せずにカンマ区切りの値を合計するにはどうすればよいですか?

MySQL 4 でストアド プロシージャを使用せずにカンマ区切りの値を合計するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-31 01:47:29728ブラウズ

How Can I Sum Comma-Separated Values in MySQL 4 Without Using Stored Procedures?

MySQL 4 でのカンマ区切りカラムの合計 (5 ではありません)

MySQL 4 では、カンマ区切りカラムに対して演算を実行します。高度な文字列操作機能がないため、外部ツールを使用するのは困難な場合があります。この記事では、MySQL 4 でそのような列を合計するための代替アプローチを検討します。

重要な文字列操作

残念ながら、MySQL 4 はストアド プロシージャをサポートしていません。より高度な文字列操作関数。このため、SQL ステートメントを使用してカンマ区切り値の複雑な計算を直接実行することが困難になります。

代替アプローチ

考えられるアプローチの 1 つは、MySQL 5 以降にアップグレードすることです。これにはストアド プロシージャのサポートが含まれており、そのような操作を処理するカスタム関数の作成が可能になります。 MySQL 5.0 でカンマ区切り値を合計するために使用できる関数の 1 つを次に示します。

<code class="sql">DELIMITER //
CREATE FUNCTION SUM_OF_LIST(s TEXT)
  RETURNS DOUBLE
  DETERMINISTIC
  NO SQL
BEGIN
  DECLARE res DOUBLE DEFAULT 0;
  WHILE INSTR(s, ",") > 0 DO
    SET res = res + SUBSTRING_INDEX(s, ",", 1);
    SET s = MID(s, INSTR(s, ",") + 1);
  END WHILE;
  RETURN res + s;
END //
DELIMITER ;</code>

この関数は次のように使用できます。

<code class="sql">mysql> SELECT SUM_OF_LIST("5,2.1") AS Result;
+--------+
| Result |
+--------+
|    7.1 |
+--------+</code>

制限事項

この関数は MySQL 5.0 でカンマ区切りの値を合計するためのソリューションを提供しますが、すべてのシナリオを適切に処理できるわけではないことに注意することが重要です。たとえば、末尾のカンマと空の値は他の環境とは異なる方法で処理されます。したがって、このアプローチを使用する場合は、慎重な検証とテストを行うことをお勧めします。

以上がMySQL 4 でストアド プロシージャを使用せずにカンマ区切りの値を合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。