sql >> Databáze >  >> RDS >> Sqlserver

INSTR() Ekvivalent v SQL Server

Mnoho RDBMS má INSTR() funkce, která nám umožňuje najít podřetězec v řetězci. Některé (jako MySQL a MariaDB) mají také LOCATE() funkce a POSITION() funkce (také podporované PostgreSQL), které dělají podobnou věc.

SQL Server nemá INSTR() funkce. Nemá ani LOCATE() nebo POSITION() funkce. Ale má CHARINDEX() funkce, která dělá totéž.

SQL Server má také PATINDEX() funkce, která dělá podobnou práci jako CHARINDEX() .

CHARINDEX() Funkce

Zde je příklad CHARINDEX() funkce:

SELECT CHARINDEX('news', 'No news is good news');

Výsledek:

4

Funkce přijímá třetí argument, který nám umožňuje určit, kde začít hledání:

SELECT CHARINDEX('news', 'No news is good news', 5);

Výsledek:

17

V tomto příkladu jsme zahájili vyhledávání na pozici 5, která byla po začátku prvního výskytu news , takže vrátil pozici druhého výskytu.

PATINDEX() Funkce

PATINDEX() funkce je podobná funkci CHARINDEX() , kromě toho, že nám umožňuje hledat vzor, ​​nikoli konkrétní řetězec.

Zde je příklad pro ilustraci toho, co mám na mysli:

SELECT PATINDEX('%ew%', 'No news is good news');

Výsledek:

5

Zde je to, co se stane, když odstraním zástupné znaky:

SELECT PATINDEX('ew', 'No news is good news');

Výsledek:

0

Viz PATINDEX() vs CHARINDEX() pro více informací o rozdílech mezi těmito dvěma funkcemi.


  1. Připojení Talend na Windows k databázi ODBC

  2. Smazat duplicitní řádky (nemazat všechny duplicitní)

  3. Oracle SQL objednávka v poddotazu problémy!

  4. postgresql generuje sekvenci bez mezery