HOWTO · MySQL

MySQL SUBSTRING_INDEX

このガイドでは、MySQL の substring_index 関数の概念を理解します。

このページの内容

このガイドでは、MySQL の substring_index 関数の概念を理解します。 このような概念により、ユーザーはさまざまな文字列の配列から選択した文字列を取得できます。

この機能について詳しく見ていきましょう。

MySQL のSUBSTRING_INDEX

まず、substring_index 関数を操作するために不可欠ないくつかの重要な概念を理解しましょう。 具体的には、DELIMITER と CHARINDEX() です。

Delimiter は、文字列を分割する主なポイントとして機能する複合記号です。 文字列はその時点で壊れ、フェッチされた文字列は、入力に応じて、その時点より前または前のいずれかになります。

Charindex() は MySQL の関数で、文字列内の特定の部分文字列の位置をフェッチしてその位置を返したいときに使用されます。 パラメータには (substring, string) が含まれます。

Substring 関数コード

次のコードは、Substring_index 関数の動作を示しています。 このコードは、MySQL の substring_index 関数に相当する SQL Server です。

次のコードは、SQL Server で実行する必要があります。

CREATE FUNCTION SUB_STRING
(
@STRING VARCHAR(8000),
@DELIMITER VARCHAR(1),
@POSITION INT
)
RETURNS VARCHAR(8000)
AS
BEGIN
IF @POSITION = 0
BEGIN
	RETURN SUBSTRING(@STRING,0,CHARINDEX(@DELIMITER,@STRING))
END
IF @POSITION = 1
BEGIN
	RETURN SUBSTRING(@STRING,CHARINDEX(@DELIMITER,@STRING)+1,LEN(@STRING))
END
RETURN @STRING
END;

コードを理解しましょう。

SUB_STRING という関数を作成しました。この関数内には、パラメーター @string (部分文字列が取得される文字列)、@delimiter および @position (2つの値 0 または 1 があります) があります。 )。

@Position は、0 に設定すると文字列の開始インデックスから区切りポイントまでフェッチを開始し、1 に設定すると 1 ポイント先からフェッチを開始するパラメータです。 区切り点から文字列の最後まで。

Begin 句はコード ブロックの開始を示し、End 句はコード ブロックの終了を示します。

最初の IF 条件では、位置は 0 に設定されます。 substring 関数では、Charindex() 関数で 0 インデックスから取得する文字列を取得しました。

これにより、0 インデックスから区切り点までの部分文字列が返されます。

例 1

次の例でこれを理解してください。

SELECT dbo.SUB_STRING('ahsanali@email.com','@',0)

ご覧のとおり、0 インデックスから区切り点までの部分文字列が返されました。

2 番目の IF 条件は、位置を 1 に設定します。 部分文字列関数では、部分文字列をフェッチする +1 条件を持つ Charindex() 関数を取得しました。これは、区切り点の前の 1 インデックスで、文字列の最後までです。

例 2

別の例を使ってさらに理解しましょう。

SELECT dbo.SUB_STRING('ahsanali@email.com','@',1)

ご覧のとおり、区切り点の前のインデックス 1 で最後の文字列までの部分文字列が返されました。

また、もう 1つのポイントは、@position (0 または 1) で間違った値を指定すると、完全な文字列が返されることです。

SELECT dbo.SUB_STRING('ahsanali@email.com','&',3)

間違った値