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()
を使用して引数のリスト内で引数の位置を返す方法も参照してください。 機能。