sql >> Databáze >  >> RDS >> Mysql

Jak funguje funkce POSITION() v MySQL

V MySQL, POSITION() Funkce vrací pozici prvního výskytu podřetězce v řetězci.

Tato funkce je ve skutečnosti synonymem pro LOCATE() , ale s trochu jinou syntaxí. LOCATE() funkce má také další funkce v tom, že vám umožňuje definovat výchozí pozici pro vaše vyhledávání.

Syntaxe

Základní syntaxe vypadá takto:

POSITION(substr IN str)

Kde substr je podřetězec a str je řetězec.

Příklad 1 – Základní použití

SELECT POSITION('Cat' IN 'The Cat') Result;

Výsledek:

+--------+
| Result |
+--------+
|      5 |
+--------+

Příklad 2 – Rozlišování malých a velkých písmen

POSITION() funkce je vícebajtová bezpečná a rozlišuje malá a velká písmena pouze v případě, že alespoň jeden argument je binární řetězec.

Následující příklad tedy nerozlišuje velká a malá písmena:

SELECT POSITION('Cat' IN 'The cat') Result;

Výsledek:

+--------+
| Result |
+--------+
|      5 |
+--------+

Příklad 3 – Žádná shoda

Funkce vrací 0 pokud podřetězec není v řetězci nalezen:

SELECT POSITION('Dog' IN 'The cat') Result;

Výsledek:

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

Příklad 4 – Vložené dílčí řetězce

Buďte opatrní při výběru podřetězce. Pokud je součástí jiného slova, můžete získat falešně pozitivní:

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Výsledek:

+--------+
| Result |
+--------+
|      6 |
+--------+

Pokud hledáte pouze kočku , zvíře, to by bylo falešně pozitivní.

Příklad 5 – Pouze první výskyt

Pamatujte, že tato funkce vrací pouze pozici prvního výskyt podřetězce. Všechny následující výskyty jsou ignorovány:

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Výsledek:

+--------+
| Result |
+--------+
|      4 |
+--------+

Příklad 6 – Argumenty NULL

Pokud je některý z argumentů NULL , výsledkem je NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Výsledek:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Jak již bylo zmíněno, můžete také použít LOCATE() funkce, která vám umožní definovat výchozí pozici pro vyhledávání.


  1. SQL Self Join

  2. Jak porovnat hodnoty Null v MySQL

  3. Transponujte vybrané výsledky pomocí Oracle

  4. Co je databáze kompatibilní s ODBC?