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

MariaDBのINSTR()とLOCATE()の違い

    MariaDBにはINSTR()があります 関数とLOCATE() 働き。どちらの関数もまったく同じことをしているように見えます–文字列内の部分文字列の位置を返します。

    ただし、違いがあります。

    違い

    これらの2つの関数の違いは、それらの構文といくつかの例を見るとわかります。

    構文

    INSTR()の構文 :

    INSTR(str,substr)

    LOCATE()で受け入れられる2つの構文 :

    LOCATE(substr,str)
    LOCATE(substr,str,pos)

    str 文字列、substr は検索する部分文字列であり、pos 検索を開始する位置です。

    2つの機能の違いは、次のように要約できます。

    • LOCATE() 関数は、INSTR()と同じ2つの引数を受け入れます 受け入れますが、順序が逆になります。
    • LOCATE() 関数は、オプションの3番目の引数を受け入れて、検索の開始位置を指定します。 INSTR() 関数はそのような引数を受け入れません。

    したがって、LOCATE() INSTR()という追加機能を提供します 提供しません。

    例1-最初の違い

    2つの関数が引数を受け入れる逆の順序を示す例を次に示します。

    SELECT 
        INSTR('Disconnect', 'con'),
        LOCATE('con', 'Disconnect');

    結果:

    +----------------------------+-----------------------------+
    | INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
    +----------------------------+-----------------------------+
    |                          4 |                           4 |
    +----------------------------+-----------------------------+

    例2–2番目の違い

    LOCATE()の追加機能を示す例を次に示します。 INSTR()を介して提供します :

    SELECT 
        INSTR('My cat is a good cat', 'cat') AS "INSTR()",
        LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
        LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";

    結果:

    +---------+----------+----------------------------+
    | INSTR() | LOCATE() | LOCATE() with 3rd Argument |
    +---------+----------+----------------------------+
    |       4 |        4 |                         18 |
    +---------+----------+----------------------------+

    この例は、LOCATE()が 関数は、オプションの3番目の引数を提供します。この引数を使用すると、検索の開始位置を指定できます。つまり、文字列全体の最初の出現に限定されません。


    1. (+)はOracle SQLで何をしますか?

    2. MySQLで重複する行を見つける4つの方法

    3. SQL ServerでのACOS()の例

    4. SQL Server:DELETEとTRUNCATE