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

MySQLで文字列内の部分文字列の位置を見つける3つの方法

    MySQLには、文字列内の部分文字列の位置を返すいくつかの文字列関数があります。具体的には、文字列内の最初の出現位置(または特定の開始点の後の最初の出現位置)を返します。

    私が参照している機能は次のとおりです。

    • INSTR()
    • LOCATE()
    • POSITION()

    以下はそれぞれの概要です。

    INSTR()

    INSTR() 関数は、文字列内で最初に出現する部分文字列を返します。

    構文は次のとおりです。

    INSTR(str,substr)

    str 検索する文字列であり、substr は検索している部分文字列です。

    SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    |     10 |
    +--------+

    この場合、文字列dogs 位置10から開始します。

    サブストリングが見つからない場合、0の結果 返されます:

    SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+

    LOCATE()

    LOCATE() 関数は、いくつかの違いを除いて、同様に機能します。引数の順序は異なり、検索を開始する場所を示すオプションの3番目のパラメーターを指定できます。

    したがって、次のいずれかの方法で使用できます。

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

    最初の構文は、INTSR()と同じです。 strを除く構文 およびsubstr 交換されます。

    2番目の構文は、オプションのposを追加します 引数。検索を開始する位置を指定できます。

    最初の構文の例

    最初の構文を使用した例を次に示します。

    SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    |     10 |
    +--------+

    2番目の構文の例

    検索を開始する開始位置を指定する例を次に示します。

    SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    |      7 |
    +--------+

    文字列catがわかります 位置1にありますが、6を指定しました 開始位置として。したがって、その文字列が次に出現する位置は、返された位置でした。

    INSTR()と同様 関数、部分文字列が見つからない場合は、0 返されます。

    POSITION()

    POSITION() 関数はLOCATE()の同義語です 、ただし構文は少し異なります。

    構文は次のとおりです。

    POSITION(substr IN str)

    これは次の同義語です:

    LOCATE(substr,str)

    したがって、前の例の1つを次のように書き直すことができます。

    SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

    結果:

    +--------+
    | Result |
    +--------+
    |     10 |
    +--------+


    1. 手動DBアップグレード後のグリッドコントロールのアップグレード

    2. SQL:NOTINとNOTEQUAL TOに関しては、どちらがより効率的で、なぜですか?

    3. SQLとMySQLの違いは何ですか

    4. PL / SQLで静的ddlが許可されないのはなぜですか?