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

Instr()を使用してSQLiteの文字列内の文字の位置を取得する

    SQLiteでは、instr()を使用できます 文字列内の特定の文字の位置を返す関数。

    この関数は、文字の最初の出現位置(存在する場合)のみを返します。

    文字が見つからない場合は、0を返します。

    引数のいずれかがNULLの場合、NULLを返します。

    仕組み

    instr() 関数は2つの引数を受け入れます。最初の引数は文字列で、2番目の引数はその文字列内で検索する文字です。

    引数が両方ともBLOBの場合、2番目の引数が最初に出現する前のバイト数より1多い数を返します。最初の引数内のどこにも出現しない場合は、0を返します。

    構文は次のようになります:

    inst(X,Y)
    • X 文字列です
    • Y キャラクターです

    実例を示します。

    SELECT instr('Black cat', 'a');

    結果:

    3

    ここで、 aという文字の場所が必要でした 。

    この場合、文字は2回表示され、instr() 最初に出現した場所を返します。

    データベースの例

    この例では、次の表を使用します。

    ProductId   ProductName    Price     
    ----------  -------------  ----------
    1           Widget Holder  139.5     
    2           Blue Widget    10.0      
    3           Red Widget     10.0      
    4           Green Widget   10.0      
    5           Widget Stick   89.75     
    6           Foo Cap        11.99     

    製品名を検索します 手紙の列。

    SELECT 
      ProductName,
      instr(ProductName, 'd') 
    FROM Products;

    結果:

    ProductName    instr(ProductName, 'd')
    -------------  -----------------------
    Widget Holder  3                      
    Blue Widget    8                      
    Red Widget     3                      
    Green Widget   9                      
    Widget Stick   3                      
    Foo Cap        0                               

    最後の行には文字がないため、 0 その行に対して返されました。

    NULL値

    前述のように、引数のいずれかがNULLの場合、NULLが返されます。

    SELECT 
      instr(NULL, 'a'),
      instr('Black cat', NULL);

    結果:

    instr(NULL, 'a')  instr('Black cat', NULL)
    ----------------  ------------------------
                                              


    1. SQLでDISTINCTを使用する方法

    2. 文字列フィールドからMySQLの日付を変換する

    3. OraclePLSQLで区切りリストをループする方法

    4. Oracle11gまたは12cでテーブル/列/インデックス名のサイズを変更します