多くのRDBMSにはINSTR()
があります 文字列内の部分文字列を検索できるようにする関数。一部(MySQLやMariaDBなど)にもLOCATE()
があります 関数とPOSITION()
同様のことを行う関数(PostgreSQLでもサポートされています)。
SQLServerにはINSTR()
がありません 働き。 LOCATE()
もありません またはPOSITION()
働き。ただし、CHARINDEX()
はあります 同じことをする関数。
SQLServerにはPATINDEX()
もあります CHARINDEX()
と同様の仕事をする関数 。
CHARINDEX()
機能
CHARINDEX()
の例を次に示します。 機能:
SELECT CHARINDEX('news', 'No news is good news');
結果:
4
この関数は、検索を開始する場所を指定できる3番目の引数を受け入れます。
SELECT CHARINDEX('news', 'No news is good news', 5);
結果:
17
この例では、news
の最初の出現が開始された後の位置5から検索を開始しました。 、したがって、2番目のオカレンスの位置を返しました。
PATINDEX()
機能
PATINDEX()
関数はCHARINDEX()
に似ています ただし、特定の文字列ではなく、パターンを検索できる点が異なります。
これが私が何を意味するかを説明するための例です:
SELECT PATINDEX('%ew%', 'No news is good news');
結果:
5
ワイルドカード文字を削除するとどうなりますか:
SELECT PATINDEX('ew', 'No news is good news');
結果:
0
PATINDEX()
を参照してください vs CHARINDEX()
これら2つの機能の違いの詳細については。