sql >> Databáze >  >> RDS >> SQLite

Získejte pozici znaku v řetězci v SQLite pomocí Instr()

V SQLite můžete použít instr() funkce, která vrátí pozici daného znaku v řetězci.

Funkce vrací pouze pozici prvního výskytu znaku (pokud existuje).

Pokud znak není nalezen, vrátí 0.

Pokud je některý z argumentů NULL, vrátí hodnotu NULL.

Jak to funguje

instr() funkce přijímá dva argumenty. První argument je řetězec a druhý argument je znak, který chcete v tomto řetězci najít.

Pokud jsou oba argumenty BLOB, vrátí o jeden více, než je počet bajtů před prvním výskytem druhého argumentu, nebo 0, pokud se nevyskytuje nikde v prvním argumentu.

Syntaxe vypadá takto:

inst(X,Y)
  • X je řetězec
  • Y je postava

Příklad

Zde je příklad k demonstraci.

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

Výsledek:

3

Zde jsem chtěl umístění písmene a .

V tomto případě se písmeno objeví dvakrát a instr() vrátí umístění prvního výskytu.

Příklad databáze

V tomto příkladu použiji následující tabulku:

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     

Vyhledám Název produktu sloupec pro písmeno.

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

Výsledek:

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

Všimněte si, že poslední řádek neobsahoval písmeno, a tedy 0 byl vrácen pro daný řádek.

Hodnoty NULL

Jak již bylo zmíněno, pokud je některý z argumentů NULL, vrátí se NULL.

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

Výsledek:

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


  1. SYSUTCDATETIME() vs GETUTCDATE() na serveru SQL Server:Jaký je rozdíl?

  2. Spojení tabulek s problémem SUM v MYSQL

  3. Migrace databází SQL pomocí příkazového řádku

  4. Lze MySQL FIND_IN_SET nebo ekvivalent nastavit tak, aby používal indexy?