MariaDBでは、FIELD()
指定されたパターンに一致する文字列または数値のインデックス位置を返す組み込みの文字列関数です。
2つ以上の引数を受け入れます。 1つ目は、検索するパターンです。後続のすべての引数は、パターンを照合するための文字列または数字です。
構文
構文は次のようになります:
FIELD(pattern, str1[,str2,...])
ここでpattern
はパターンであり、str1[, str2,…]
文字列または数字を表します。
例
基本的な例は次のとおりです。
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
結果:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
この場合、パターン(Green
)は2番目の位置で発生するため、2
返されます。
大文字と小文字の区別
FIELD()
関数は文字列を大文字と小文字を区別しないものとして扱います。
例:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
結果:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
一致なし
一致するものがない場合は、0
返されます。
例:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
結果:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
数字
すべての引数が数値の場合、それらは数値として扱われます。それ以外の場合は、ダブルとして扱われます。
例:
SELECT FIELD(3, 40, 2, 18, 10, 3);
結果:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
複数の一致
パターンに一致するものが複数ある場合は、最初のインデックスのみが返されます:
SELECT FIELD(3, 40, 3, 18, 10, 3);
結果:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
ヌルパターンの指定
null
を提供する 最初の引数は0
になります :
SELECT FIELD(null, 1, 2, 3);
結果:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
文字列引数を1つだけ提供する
一致する単一の引数を提供することは有効です:
SELECT FIELD(205, 205);
結果:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
単一の引数
ただし、FIELD()
に引数を1つだけ渡す エラーを返します:
SELECT FIELD(205);
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
引数がありません
FIELD()
を呼び出す 引数を渡さないとエラーが発生します:
SELECT FIELD();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'