ホームページ >データベース >mysql チュートリアル >MySQL で PHP のexplode() 関数をシミュレートして文字列を分割する方法

MySQL で PHP のexplode() 関数をシミュレートして文字列を分割する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 10:36:10108ブラウズ

How to Simulate PHP's explode() Function in MySQL to Split Strings?

MySQL で文字列を分割

MySQL には、文字列を分割するための PHP のexplode() 関数に似た組み込み関数はありません。しかし、少し工夫すれば同様の効果を得ることができます。

カスタム分解関数を作成する

カスタム分解関数を作成するには、次の構文を使用できます:

<code class="language-sql">CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
       delim, '');</code>

この関数は、分割する文字列 (str)、区切り文字 (delim)、および返す出現回数 (pos) の 3 つのパラメータを受け入れます。

使用法

カスタム分解関数を使用するには、次のように呼び出します:

<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 1);</code>

このクエリは、カンマ区切りの文字列の最初の出現として「apple」を返します。

使用例

あなたの特定のユースケースでは、異なるデータベースレコード内で同じだが逆順のスポーツ結果を検索したいと考えています。カスタム展開関数を使用して、分数を個々の数値に分割し、比較することができます:

<code class="language-sql">WHERE opponent1.date = opponent2.date
  AND SPLIT_STRING(opponent1.score, '-', 1) = SPLIT_STRING(opponent2.score, '-', 2)
  AND SPLIT_STRING(opponent1.score, '-', 2) = SPLIT_STRING(opponent2.score, '-', 1)</code>

このクエリは、同じスコアを持つ逆の順序の一致レコードを返します。

以上がMySQL で PHP のexplode() 関数をシミュレートして文字列を分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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