MySQL での PHP のexplode() の複製
MySQL は、文字列を分割するための PHP の explode()
関数と直接同等のものを提供しません。 これは、SQL クエリ内の文字列データを解析する必要がある場合に、多くの場合に問題を引き起こします。 ただし、カスタム関数を使用すると、この制限に効果的に対処できます。
文字列分割用の MySQL 関数
次の SQL コードは、文字列、区切り文字、位置を入力として受け取る関数 SPLIT_STRING()
を定義します。
<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>
SPLIT_STRING()
関数の使用
この関数は、ターゲット文字列、区切り文字 (「,」、「-」、またはその他の任意の単一文字)、および部分文字列の目的の位置を指定することによって使用されます。 例:
<code class="language-sql">SELECT SPLIT_STRING('apple, pear, melon', ',', 2);</code>
このクエリは「pear」を返します。
重要な考慮事項
SPLIT_STRING()
関数は、示されているように、指定された位置に基づいて単一の部分文字列のみを返します。 複数の部分文字列を取得するには、手続き型 SQL やその他の技術を含む、より複雑なアプローチが必要になる可能性があります。 正規表現は、より複雑な文字列操作のニーズに対して別のソリューションを提供する可能性があります。
以上がPHP のexplode() 関数のように MySQL で文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。