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()
を使用してリストアイテムの位置を返す方法もご覧ください。 機能。