Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

INSTR() Еквивалент в SQL Server

Много RDBMS имат INSTR() функция, която ни позволява да намерим подниз в низ. Някои (като MySQL и MariaDB) също имат LOCATE() функция и POSITION() функция (също поддържана от PostgreSQL), които правят подобно нещо.

SQL Server няма INSTR() функция. Нито има LOCATE() или POSITION() функция. Но той има CHARINDEX() функция, която прави същото.

SQL Server също има PATINDEX() функция, която върши подобна работа на CHARINDEX() .

CHARINDEX() Функция

Ето пример за CHARINDEX() функция:

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

Резултат:

4

Функцията приема трети аргумент, който ни позволява да посочим откъде да започнем търсенето:

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

Резултат:

17

В този пример започнахме търсенето на позиция 5, която беше след началото на първото появяване на news , така че върна позицията на второто появяване.

PATINDEX() Функция

PATINDEX() функцията е подобна на CHARINDEX() , с изключение на това, че ни позволява да търсим шаблон, а не конкретен низ.

Ето един пример, за да илюстрирам какво имам предвид:

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

Резултат:

5

Ето какво се случва, ако премахна заместващите знаци:

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

Резултат:

0

Вижте PATINDEX() срещу CHARINDEX() за повече за разликите между тези две функции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. В реферираната таблица няма първични или кандидат-ключове, които да съответстват на списъка с референтни колони във външния ключ

  2. Разлика между функции с таблично стойности с множество оператори и вградени функции с таблично стойности в SQL Server

  3. Вземете подниз в SQL Server

  4. Кодът на Entity Framework е бавен, когато се използва Include() много пъти

  5. Актуализирайте множество таблици в SQL Server с помощта на INNER JOIN