Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

INSTR() odpowiednik w SQL Server

Wiele RDBMS ma funkcję INSTR() funkcja, która umożliwia nam znalezienie podciągu w ciągu. Niektóre (takie jak MySQL i MariaDB) mają również funkcję LOCATE() funkcja i POSITION() funkcja (również obsługiwana przez PostgreSQL), które robią podobne rzeczy.

SQL Server nie ma INSTR() funkcjonować. Nie ma też funkcji LOCATE() lub POSITION() funkcjonować. Ale ma CHARINDEX() funkcja, która robi to samo.

SQL Server ma również funkcję PATINDEX() funkcja, która wykonuje podobne zadanie do CHARINDEX() .

CHARINDEX() Funkcja

Oto przykład CHARINDEX() funkcja:

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

Wynik:

4

Funkcja przyjmuje trzeci argument, który pozwala nam określić, gdzie rozpocząć wyszukiwanie:

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

Wynik:

17

W tym przykładzie rozpoczęliśmy wyszukiwanie na pozycji 5, czyli po rozpoczęciu pierwszego wystąpienia news , więc zwrócił pozycję drugiego wystąpienia.

PATINDEX() Funkcja

PATINDEX() funkcja jest podobna do CHARINDEX() , z wyjątkiem tego, że pozwala nam szukać wzorca, a nie określonego ciągu.

Oto przykład ilustrujący, co mam na myśli:

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

Wynik:

5

Oto, co się stanie, jeśli usunę symbole wieloznaczne:

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

Wynik:

0

Zobacz PATINDEX() vs CHARINDEX() aby dowiedzieć się więcej o różnicach między tymi dwiema funkcjami.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć listę schematów partycji w SQL Server (T-SQL)

  2. SQL Server SELECT INTO @variable?

  3. SQL :BETWEEN vs <=i>=

  4. Jak obliczyć łączną liczbę godzin podróży między miastem x i y i na odwrót?

  5. Ograniczenie sprawdzania nakładania się zakresu dat