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

MariaDBでのPOSITION()のしくみ

    MariaDBでは、POSITION() 別の文字列内で最初に出現する部分文字列の位置を返す組み込みの文字列関数です。これはODBC3.0の一部です。

    POSITION(substr IN str) LOCATE(substr,str)の同義語です 。

    POSITION() INSTR()にも似ています 関数、ただしPOSITION() INを使用します 構文、およびこれら2つの関数間で引数の順序が逆になっていること。

    構文

    構文は次のようになります:

    POSITION(substr IN str)

    str は文字列であり、substr の位置を返す部分文字列です。

    基本的な例は次のとおりです。

    SELECT POSITION('cute' IN 'My cute dog');

    結果:

    +-----------------------------------+
    | POSITION('cute' IN 'My cute dog') |
    +-----------------------------------+
    |                                 4 |
    +-----------------------------------+

    大文字と小文字の区別

    POSITION() 大文字と小文字を区別しない検索を実行します:

    SELECT POSITION('CUTE' IN 'My cute dog');

    結果:

    +-----------------------------------+
    | POSITION('CUTE' IN 'My cute dog') |
    +-----------------------------------+
    |                                 4 |
    +-----------------------------------+

    複数回発生

    サブストリングが複数回出現する場合は、最初のサブストリングの位置(開始位置から)のみが返されます:

    SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');

    結果:

    +--------------------------------------------------+
    | POSITION('cute' IN 'My cute dog is SOOOO cute!') |
    +--------------------------------------------------+
    |                                                4 |
    +--------------------------------------------------+

    パーシャルマッチ

    部分文字列がより大きな単語の一部である場合でも、一致します:

    SELECT POSITION('dog' IN 'My doggy is SOOO cute!');

    結果:

    +---------------------------------------------+
    | POSITION('dog' IN 'My doggy is SOOO cute!') |
    +---------------------------------------------+
    |                                           4 |
    +---------------------------------------------+

    ただし、文字列が部分文字列の一部にすぎない場合は、一致しません:

    SELECT POSITION('doggy' IN 'My dog is SOOO cute!');

    結果:

    +---------------------------------------------+
    | POSITION('doggy' IN 'My dog is SOOO cute!') |
    +---------------------------------------------+
    |                                           0 |
    +---------------------------------------------+

    スペース

    スペース文字は引き続き文字列であるため、それが唯一の文字であっても、サブ文字列にスペースを含めることができます:

    SELECT POSITION('' IN 'My dog');

    結果:

    +---------------------------+
    | POSITION(' ' IN 'My dog') |
    +---------------------------+
    |                         3 |
    +---------------------------+

    空の文字列

    サブ文字列が空の文字列の場合は次のようになります。

    SELECT POSITION('' IN 'My dog');

    結果:

    +--------------------------+
    | POSITION('' IN 'My dog') |
    +--------------------------+
    |                        1 |
    +--------------------------+

    一致なし

    文字列に部分文字列が見つからない場合は、POSITION() 0を返します :

    SELECT position('cat' IN 'My dog');

    結果:

    +-----------------------------+
    | position('cat' IN 'My dog') |
    +-----------------------------+
    |                           0 |
    +-----------------------------+

    ヌル引数

    nullを提供する いずれの引数についても、結果はnullになります。 :

    SELECT 
        POSITION(null IN 'My dog'),
        POSITION('dog' IN null);

    結果:

    +----------------------------+-------------------------+
    | POSITION(null IN 'My dog') | POSITION('dog' IN null) |
    +----------------------------+-------------------------+
    |                       NULL |                    NULL |
    +----------------------------+-------------------------+

    間違った数の引数を指定する

    POSITION()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT POSITION('dog');

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

    1. mysqlで単一のキーワードを持つ単一のwhere条件を使用してテーブルのすべての列を検索します

    2. MariaDB JSON_VALUE()とJSON_QUERY():違いは何ですか?

    3. Windowsにpggemをインストールできません

    4. SQLiteの結果をJSONとしてフォーマットする