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

SQL Serverで同等のINSTR()

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


    1. (+)はOracle SQLで何をしますか?

    2. PostgreSQL関数の引数としてのテーブル

    3. PostgreSQLで重複する日付をテストする方法

    4. インデックスのDOとDONT