sql >> Databasteknik >  >> RDS >> SQLite

Få positionen för en karaktär i en sträng i SQLite med Instr()

I SQLite kan du använda instr() funktion för att returnera positionen för ett givet tecken i en sträng.

Funktionen returnerar endast positionen för den första förekomsten av tecknet (om någon).

Om tecknet inte hittas, returnerar det 0.

Om något av argumenten är NULL, returnerar det NULL.

Så fungerar det

instr() funktion accepterar två argument. Det första argumentet är strängen och det andra argumentet är det tecken du vill hitta inom den strängen.

Om argumenten är båda BLOB, returnerar det en mer än antalet byte före den första förekomsten av det andra argumentet, eller 0 om det inte förekommer någonstans inom det första argumentet.

Syntaxen ser ut så här:

inst(X,Y)
  • X är strängen
  • Y är karaktären

Exempel

Här är ett exempel att visa.

SELECT instr('Black cat', 'a');

Resultat:

3

Här ville jag ha platsen för bokstaven a .

I det här fallet visas bokstaven två gånger och instr() returnerar platsen för den första förekomsten.

Ett databasexempel

I det här exemplet kommer jag att använda följande tabell:

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Jag ska söka efter Produktnamn kolumn för ett brev.

SELECT 
  ProductName,
  instr(ProductName, 'd') 
FROM Products;

Resultat:

ProductName    instr(ProductName, 'd')
-------------  -----------------------
Widget Holder  3                      
Blue Widget    8                      
Red Widget     3                      
Green Widget   9                      
Widget Stick   3                      
Foo Cap        0                               

Observera att den sista raden inte hade bokstaven och därför 0 returnerades för den raden.

NULL-värden

Som nämnts, om något av argumenten är NULL, returneras NULL.

SELECT 
  instr(NULL, 'a'),
  instr('Black cat', NULL);

Resultat:

instr(NULL, 'a')  instr('Black cat', NULL)
----------------  ------------------------
                                          


  1. Hur konverterar man kommaseparerade värden till rader i Oracle?

  2. Hur FIELD() fungerar i MariaDB

  3. Öka värdet i MySQL-uppdateringsfrågan

  4. Referera till en tabell i annat schema och utelämna schemanamn