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

MySQLの特定のサブストリングの最後のインデックス

    @マークBは近かった。 MySQLでは、次のステートメントは12を返します:

    SELECT CHAR_LENGTH("Have_a_good_day") - LOCATE('_', REVERSE("Have_a_good_day"))+1;
    

    値の使用の可能性を予測して、次のステートメントは、最後のアンダースコア(つまり、_)の前の文字列の左側の部分を抽出します。

    SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last")));
    

    結果は「first_middle」です。区切り文字を含める場合は、次を使用します:

    SELECT LEFT("first_middle_last", CHAR_LENGTH("first_middle_last") - LOCATE('_', REVERSE("first_middle_last"))+1);
    

    LOCATEを拡張して、右から検索を開始するオプションがあると便利です。

    最後のスペースの後に文字列の正しい部分が必要な場合、より良い解決策は次のとおりです。

    SELECT SUBSTRING_INDEX("first_middle_last", '_', -1);
    

    これは「最後」を返します。



    1. PostgreSQLで読み取り専用ユーザーを作成するにはどうすればよいですか?

    2. OracleEntityFramework-異なるスキーマのテーブルからエンティティを生成

    3. NodeJS/mySQL-ER_ACCESS_DENIED_ERRORユーザー'root'@'localhost'のアクセスが拒否されました(パスワードを使用:YES)

    4. OSX10.7Lion上のMySQLgem