多くの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つの機能の違いの詳細については。