MariaDBの2つの類似した関数は、FIELD()
です。 およびFIND_IN_SET()
。一見、これらは同じことをしているように見えますが、違いがあります。
この記事では、これら2つの機能の違いについて説明します。
構文と定義
まず、各関数の構文と定義を見てみましょう。
関数 | 構文 | 定義 |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | 指定されたパターンに一致する文字列または数値のインデックス位置を返します。 |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | 文字列リストで指定されたパターンが出現するインデックス位置を返します。 |
どちらの関数もpattern
を受け入れます 彼らの最初の議論として。ただし、次に来るのは、それらの違いを浮き彫りにするものです。
-
FIELD()
カンマで区切られた1つ以上の文字列を受け入れます。 -
FIND_IN_SET()
単一の文字列リストを受け入れます。
例
これら2つの機能の違いを示す例を次に示します。
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
結果:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
各関数は同じ結果を返しましたが、各関数は異なる形式の文字列を受け入れました。
FIELD()
に提供される値 FIND_IN_SET()
に提供された値に対して、3つの別々の引数として提供されました 単一の文字列リスト(個別の値を含む)として提供されました。