MySQLで指定された部分文字列の最後のインデックス
2023-08-19 16:25:46
質問
MySQL で指定された部分文字列の最初の出現のインデックスを見つけるには
INSTR()
関数を使用して、次のように見つけることができます。
SELECT instr('Have_a_good_day', '_') AS index_position
と表示されます。
5
と表示され、指定された部分文字列(この場合はアンダースコア)の最初の出現は
_
.
与えられた文字(または部分文字列)の最後の出現箇所を取得したいのですが、Javaのような
lastIndexOf(String str)
メソッドのようなものを取得する必要がありますが、MySQL では組み込み関数を見つけることができません。
MySQL でこれを達成するための組み込み機能はありますか?
どのように解決するのですか?
Marc 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);
これは "last"を返します。
関連
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] 文字列の中で部分文字列が最後に出現するインデックスを検索する
-
[解決済み】MySQLで正規表現による置換を行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL Innodb インデックスメカニズム詳細解説
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
MySQLインストールチュートリアル(Windows用)詳細
-
[解決済み] ユニークなテーブル/エイリアスではない
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
MySQLでテーブルを削除します。親行が削除または更新できません: 外部キー制約に失敗しました。
-
MySQL 接続タイムアウト。エラー SQLSTATE[HY000] [2002] 接続がタイムアウトしました 解決済み
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] 1つのフィールドから2つのフィールドに値を分割する