sql >> Databasteknik >  >> RDS >> Mysql

Hur POSITION()-funktionen fungerar i MySQL

I MySQL, POSITION() funktion returnerar positionen för den första förekomsten av en delsträng i strängen.

Denna funktion är faktiskt en synonym för LOCATE() , men med en lite annorlunda syntax. LOCATE() Funktionen har också extra funktionalitet, genom att den låter dig definiera en startposition för din sökning.

Syntax

Den grundläggande syntaxen ser ut så här:

POSITION(substr IN str)

Där substr är delsträngen och str är strängen.

Exempel 1 – Grundläggande användning

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

Resultat:

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

Exempel 2 – skiftlägeskänslighet

POSITION() funktionen är multibyte säker och är skiftlägeskänslig endast om minst ett argument är en binär sträng.

Så följande exempel är skiftlägesokänsligt:

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

Resultat:

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

Exempel 3 – Ingen matchning

Funktionen returnerar 0 om delsträngen inte finns i strängen:

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

Resultat:

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

Exempel 4 – Inbäddade delsträngar

Var försiktig när du väljer delsträng. Om det är en del av ett annat ord kan du få ett falskt positivt:

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

Resultat:

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

Om du bara letar efter katt , djuret, skulle detta vara ett falskt positivt.

Exempel 5 – Endast första förekomsten

Kom ihåg att den här funktionen endast returnerar positionen för den första förekomsten av delsträngen. Eventuella efterföljande händelser ignoreras:

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

Resultat:

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

Exempel 6 – NULL-argument

Om något av argumenten är NULL , resultatet är NULL :

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

Resultat:

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

Som nämnts kan du också använda LOCATE() funktion, som låter dig definiera en startposition för din sökning.


  1. Hur formaterar jag ett tal med kommatecken i T-SQL?

  2. Lagrad procedur och behörigheter - räcker det med EXECUTE?

  3. Hämtar datum i sql-servern, CURRENT_TIMESTAMP vs GetDate()

  4. Det gick inte att ladda sql-moduler till databasklustret under PostgreSQL-installationen