sql >> データベース >  >> RDS >> Mysql

MySQLで部分文字列を抽出する方法

    問題:

    特定の列のテキストから部分文字列を抽出したい。

    例:

    データベースには、web_address id列にデータがあります およびaddress 。 「www.」を削除します 」の先頭と「.comaddressの最後にある’ 。

    id アドレス
    1 www.example.com
    2 www.google.com
    3 www.learnsql.com

    ソリューション1:

    最初の4文字を削除するには:

    SELECT
    SUBSTR(address, 5, LENGTH(address) -4) AS substring
    FROM web_address;
    

    最後の4文字を削除するには:

    SELECT
    SUBSTR(address, 1, LENGTH(address) -4) AS substring
    FROM web_address;
    

    最初の4文字と最後の4文字を削除するには:

    SELECT
    SUBSTR(address, 5, LENGTH(address) -8) AS substring
    FROM web_address;
    

    ソリューション2:

    最初の4文字を削除するには:

    SELECT
    SUBSTRING(address, 5, LENGTH(address)) AS substring
    FROM web_address;
    

    最後の4文字を削除するには:

    SELECT
    SUBSTRING(address, 1, LENGTH(address) -4) AS substring
    FROM web_address;
    

    最初の4文字と最後の4文字を削除するには:

    SELECT
    SUBSTRING(address, 5, LENGTH(address) -8) AS substring
    FROM web_address;
    

    ソリューション3:

    右から2番目の「。」の前のすべての文字を削除するには:

    SELECT
    SUBSTRING_INDEX(address, '.', -2) AS substring
    FROM web_address;
    

    左から2番目の「。」以降のすべての文字を削除するには:

    SELECT
    SUBSTRING_INDEX(address, '.', 2) AS substring
    FROM web_address;
    

    左から2番目の「。」の後のすべての文字を削除してから、右から最初の「。」の前のすべての文字を削除するには:

    SELECT
    SUBSTRING_INDEX(
    	SUBSTRING_INDEX(address, '.', 2),
    	'.',
    	-1
    ) AS substring
    FROM web_address;
    

    結果は次のとおりです。

    substring
    google
    learnsql

    ディスカッション:

    最初の解決策と2番目の解決策はどちらも、SUBSTR()を使用してテキストから指定された数の文字を削除します またはSUBSTRING() 働き。 SUBSTR() SUBSTRING()の同義語です 。どちらも引数として文字列と開始位置が必要です。抽出する文字数を定義する最後の引数はオプションです。最後の引数を省略すると、(開始点からの)文字列全体が返されます。

    3番目のソリューションでは、SUBSTRING_INDEX() 関数は、指定された文字の前後のテキストを削除します。引数として、文字列、文字、およびテキスト抽出を開始する場所で検出される文字のインスタンスの数が必要です。


    1. MySQLでピボットテーブルの出力を返すにはどうすればよいですか?

    2. テーブルの列名をどのように返しますか?

    3. データモデルのグローバリゼーションについて覚えておくべき7つの重要事項

    4. TO_SECONDS()の例– MySQL