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

MySQLでリストアイテムの位置を返す方法

    MySQLでは、FIND_IN_SET()を使用できます 文字列リスト内の特定のリストアイテムのインデックスを返す関数(たとえば、「item1、item2、item3、…」)。

    関数は2つの引数を取ります。検索する文字列と検索するリスト。

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

    FIND_IN_SET(str,strlist)

    str は探している文字列であり、strlist 検索する文字列リストです。

    次に例を示します:

    SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';

    結果:

    +--------+
    | Result |
    +--------+
    |      2 |
    +--------+
    

    これは2を返します それが文字列Dogの位置だからです 文字列リスト内。

    最初に出現したインデックスのみが返されることに注意してください。したがって、Dogが別に発生した場合 その最初の結果の後でも、同じ結果が得られます:

    SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';

    結果:

    +--------+
    | Result |
    +--------+
    |      2 |
    +--------+
    

    一致なし

    文字列が見つからない場合、0の結果 返されます:

    SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+
    

    最初の引数にカンマが含まれている場合はどうなりますか?

    最初の引数にコンマが含まれている場合、関数は肯定的な結果を返しません。

    次に例を示します:

    SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+
    

    この例では、肯定的な結果が返されると予想される場合があります(Cat,Dogが指定された場合) は実際にはリストに含まれています)。ただし、リストではカンマが区切り文字として使用されているため、文字列の一致は機能しません。

    FIELD()を使用して引数のリスト内で引数の位置を返す方法も参照してください。 機能。


    1. ブール値のメンバー関数execute()の呼び出し

    2. DSTのためにOracleの日付比較が壊れています

    3. SQLServerデータベーススナップショット-2

    4. isqlによるSQLの実行方法の変更