sql >> データベース >  >> RDS >> MariaDB

MariaDB FIELD()とFIND_IN_SET():違いは何ですか?

    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つの別々の引数として提供されました 単一の文字列リスト(個別の値を含む)として提供されました。


    1. カスタム型配列をPostgres関数に渡す方法

    2. Ubuntu20.04にArangoDBをインストールする方法

    3. ランニングトータル/ランニングバランスを計算する

    4. JDBCとMySQLを使用した通信リンク障害の解決