Функции Transact-SQL для работы со строками и данными типа даты/времениФункции работы со строками в MS SQL SERVERФункции CHARINDEX и PATINDEX |
|||||||||||
Функция CHARINDEX имеет синтаксис:
Здесь необязательный целочисленный параметр стартовая_позиция определяет позицию в строковом выражении, начиная с которой выполняется поиск. Если этот параметр опущен, поиск выполняется от начала строкового_выражения. Например, запрос будет выводить те корабли, в которых имеется сочетание символов «sh». Здесь используется тот факт, что если искомая строка не будет обнаружена, то функция CHARINDEX возвращает 0. Результат выполнения запроса будет содержать следующие корабли:
Следует отметить, что если искомая подстрока либо строковое выражение есть NULL, то результатом функции тоже будет NULL. Следующий пример определяет позиции первого и второго вхождения символа a в имени корабля California:
Обратите внимание, что при определении второго символа в функции CHARINDEX используется стартовая позиция, которой является позиция следующего за первой буквой a символа — CHARINDEX('a', name)+1. Правильность результата — 2 и 10 — легко проверить. Функция PATINDEX имеет следующий синтаксис:
Главное отличие этой функции от CHARINDEX заключается в том, что поисковая строка может содержать подстановочные знаки — % и _. При этом концевые знаки % являются обязательными. Например, использование этой функции в первом примере будет иметь вид А вот, например, как можно найти имена кораблей, которые содержат последовательность из трех символов, первый и последний из которых есть e: Результат выполнения этого запроса выглядит следующим образом:
|