SQL Server で最後の部分文字列インスタンスを効率的に見つける
SQL Server の文字列操作でよくある課題には、特定の部分文字列が最後に出現した場所を正確に特定することが含まれます。 専用の「LastIndexOf」関数はありませんが、効果的な方法は存在します。
従来の方法: 文字列の反転と解析
一般的な (面倒ではありますが) アプローチには、文字列を反転し、反転された文字列内でターゲットの部分文字列の最初のインスタンスを見つけて (CHARINDEX
を使用)、次にインデックスを反転して元の位置を取得することが含まれます。この手法は機能しますが、複雑で可読性に欠けます。
強化されたアプローチ: RIGHT()
と LEFT()
SQL Server の RIGHT()
および LEFT()
関数は、より合理化された効率的なソリューションを提供します。 文字列の最後のアンダースコア ("_") の 以降 の部分を抽出するには、RIGHT()
:
<code class="language-sql">SELECT RIGHT(db_name(), CHARINDEX('_', REVERSE(db_name() + '_') ) - 1)</code>
逆に、最後のアンダースコアの前の部分文字列を取得するには、LEFT()
:
<code class="language-sql">SELECT LEFT(db_name(), LEN(db_name()) - CHARINDEX('_', REVERSE(db_name() + '_')) )</code>
これらの式は、CHARINDEX()
を巧みに使用して反転された文字列内のアンダースコアを見つけ、LEN()
を使用して文字列の長さを確認します。 この組み合わせにより、複雑な文字列反転プロセスを行わずに、迅速かつ正確な部分文字列の抽出が可能になります。
以上がSQL Server で部分文字列の最後のインデックスを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。