MySQLでは、FIELD()を使用できます 引数のリスト内の指定された文字列または数値の位置を返す関数。この関数は、後続の引数のリストの最初の引数のインデックス(位置)を返します。
構文は次のようになります:
FIELD(str,str1,str2,str3,...)
str は検索するアイテムであり、str1,str2,str3,... 検索しているリストです。
次に例を示します:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?'; 結果:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
この例では、リストは次のとおりです。'Marge', 'Homer', 'Bart' 文字列Homerを検索しています そのリスト内。そしてHomer は引数のリストの2番目の項目であり、結果は2です。 。
完全一致
完全に一致する必要があることに注意してください。一致しない場合は、0が返されます。 。
たとえば、rを削除すると Homerから 、Homeを検索することになります 代わりに:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?'; 結果:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
この場合、Homerであっても Homeが含まれています 、完全に一致するわけではなく、結果は0です。 。
数字
FIELD() 関数は数字でも機能します:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
結果:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
FIELD()へのすべての引数が は数値であり、すべての引数は数値として比較されます。すべてが文字列の場合、文字列として比較されます。それらが混在している場合、それらは2倍として比較されます。
FIELD() 関数はELT()を補完するものです 関数。リスト内の位置でリストアイテムを検索できます。
FIND_IN_SET()を使用してリストアイテムの位置を返す方法もご覧ください。 機能。