ホームページ >データベース >mysql チュートリアル >MySQL で PHP のexplode() 関数をシミュレートして文字列を分割する方法
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 サイトの他の関連記事を参照してください。