Oracle находит символ в строке

Обновлено: 02.07.2024

Функция PLSQL INSTR используется для возврата местоположения подстроки в строке.
Функция PLSQL INSTR ищет в строке подстроку, указанную пользователем с использованием символов, и возвращает позицию в строке, которая является первый символ указанного вхождения подстроки.
Функция PLSQL INSTR принимает четыре параметра: строку, подстроку, начальную позицию и n-е появление.
Строка и подстрока могут быть любого типа данных, например как CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

Синтаксис:

  1. строка –
    используется для указания строки, в которой нужно искать подстроку. Это может быть любой из типов данных CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.
  2. подстрока –
    используется для указания подстроки, которую необходимо найти. Это может быть любой из типов данных CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.
  3. start_position –
    это необязательный параметр, который используется для указания позиции в строке, с которой начнется поиск. Значение по умолчанию – 1. Функция INSTR отсчитывает до start_position количество символов с конца строки, а затем выполняет поиск в направлении начала строки, если вставленное значение отрицательное.
  4. n-й внешний вид –
    это необязательный параметр, который используется для указания n-го внешнего вида подстроки. Значение по умолчанию – 1.
  1. Оракул 12c
  2. Оракул 11 г.
  3. Оракул 10 г
  4. Оракул 9i
  5. Оракул 8i

Пример 1. Использование символа для прямого поиска позиции подстроки.

Вывод:

Пример 2. Использование позиции символа для прямого поиска позиции подстроки.

Вывод:

Пример 3. Использование позиции символа для прямого поиска позиции подстроки на 3-й позиции.

Вывод:

Пример 4. Использование позиции символа для поиска в обратном направлении для определения позиции подстроки.

Вывод:

Пример 5. Использование трехбайтового набора символов для поиска позиции подстроки.

Функция Oracle INSTR() ищет подстроку в строке и возвращает позицию подстроки в строке.

Синтаксис

Следующий рисунок иллюстрирует синтаксис функции Oracle INSTR():

Аргументы

Функция Oracle INSTR() принимает четыре аргумента:

строка

строковое или символьное выражение, содержащее искомую подстроку.

подстрока

подстрока для поиска

начальная_позиция

— ненулевое целое число, указывающее, где в строке функция INSTR() начинает поиск. Начальная_позиция вычисляется с использованием символов, определенных входным набором символов.

Если start_position положителен, функция INSTR() ищет и считает вперед с начала строки. Если start_position имеет отрицательное значение, функция INSTR() будет искать и считать в обратном направлении от конца строки.

Start_position – необязательный параметр. Значение start_position по умолчанию равно 1. Это означает, что по умолчанию функция INSTR() выполняет поиск с начала строки.

появление

является положительным целым числом, указывающим, в каком вхождении подстроки должна искать функция INSTR(). Вхождение является необязательным, и его значение по умолчанию равно 1, что означает, что функция INSTR() ищет первое вхождение подстроки по умолчанию.

Возвращаемое значение

Функция INSTR() возвращает положительное целое число, представляющее собой позицию подстроки в строке.

Если строка не содержит подстроки , функция INSTR() возвращает 0 (ноль).

Примеры

Oracle INSTR

1) Поиск с начала строки

Следующий оператор возвращает местоположение первого вхождения подстроки is в This is a playlist , начиная с позиции 1 (первого символа) в строке.

В этом примере функция INSTR() ищет первое вхождение подстроки в начале строки. Это список воспроизведения.

2) Поиск 2-го и 3-го вхождения подстроки

Следующий оператор возвращает расположение 2-го и 3-го вхождений подстроки is in This is a playlist

Oracle INSTR — поиск 2-го и 3-го вхождения

В этом примере мы передали start_position как 1, а вхождение как 2 и 3, чтобы дать указание функции INSTR() искать 2-е и 3-е вхождения подстроки в строке This is a playlist .< /p>

3) Поиск несуществующей подстроки в строке

Следующий пример иллюстрирует результат, когда подстрока не найдена в искомой строке:

4) Искать назад

В следующем примере выполняется поиск первого вхождения подстроки в обратном направлении от конца искомой строки.

В этом руководстве вы узнали, как искать и возвращать позицию подстроки в строке.

Функция INSTR в Oracle похожа на SUBSTR , за исключением того, что вместо подстроки функция INSTR в Oracle возвращает расположение строки.

ВЫБЕРИТЕ
INSTR('Настало время для всех хороших людей',' ',1,3)
FROM
dual;

В приведенном выше примере я использую Oracle INSTR для поиска третьего вхождения строки " " (пробел), начиная с начала. По результатам функции Oracle INSTR третий пробел в строке приходится на символ номер 11.

Теперь небольшая задача. Предположим, что мой босс хочет знать, какое первое слово в названии каждой книги. Подумайте о решении, прежде чем смотреть ответ ниже.

SUBSTR(book_title,1,( INSTR(book_title,' ',1,1)-1)) "Первое слово"
ИЗ
книги;

В основном я использовал функцию Oracle INSTR и запрашивал подстроку названия книги, начиная с первого символа и заканчивая первым пробелом минус один, чтобы удалить пробел из результатов. Этот тип запроса Oracle INSTR на самом деле очень распространен в базах данных, которые не нормализованы должным образом. Если бы имена авторов хранились в нашей базе данных PUBS в одном столбце, нам пришлось бы использовать этот тип запроса Oracle INSTR для разделения имени и фамилии, когда это необходимо.

Изменения Oracle 10g в Oracle INSTR

Функция Oracle INSTR была дополнена новой функцией regexp_instr.

regexp_instr расширяет функциональность функции Oracle INSTR, позволяя искать в строке шаблон регулярного выражения POSIX. Функция оценивает строки, используя символы, как определено входным набором символов. Он возвращает целое число, указывающее начальную или конечную позицию совпадающей подстроки, в зависимости от значения аргумента return_option. Если совпадений не найдено, функция возвращает 0.

В документации Oracle приведен следующий пример синтаксиса INSTR:

Со следующим описанием иллюстрации выше:


Бурлесон — американская команда


Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.

Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.

Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle. Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:


и укажите URL-адрес страницы.


Burleson Consulting

Оракул поддержки баз данных

В этой статье мы рассмотрим функцию INSTR (включая ее варианты), объясним, как ее использовать, и рассмотрим несколько примеров.

Назначение функции Oracle INSTR

Функция Oracle INSTR позволяет искать в строке вхождение другой строки и возвращать позицию вхождения в строке.

Это удобно для поиска того, существует ли строка в другой строке, а также для выполнения дополнительных задач, например других функций обработки текста или обновления данных.

Как строковые, так и подстрочные параметры могут быть любого из следующих типов данных:

Эти функции INSTR являются вариантами базовой функции INSTR, которая ищет внутри строки подстроку и возвращает позицию в строке первого вхождения подстроки.

Эти варианты отличаются тем, как они определяют позицию возвращаемой подстроки:

  • INSTRB вычисляет длину в байтах.
  • INSTRC вычисляет длину, используя символы Юникода.
  • INSTR2 вычисляет длину с использованием кодовых точек USC2.
  • INSTR4 вычисляет длину с использованием кодовых точек USC4.

Синтаксис и параметры функции Oracle INSTR

Синтаксис функции INSTR:

INSTR(строка, подстрока, [начальная_позиция], [вхождение] )

Эта функция Oracle INSTR на самом деле отличается от других функций тем, что имеет несколько разных версий. Каждый из них различается тем, как они определяют позицию возвращаемой подстроки:

  • INSTR вычисляет длину, используя символы, определенные входным набором символов.
  • INSTRB вычисляет длину в байтах.
  • INSTRC вычисляет длину, используя полные символы Юникода.
  • INSTR2 вычисляет длину с использованием кодовых точек USC2.
  • INSTR4 вычисляет длину с использованием кодовых точек USC4.
  • строка (обязательный): это текстовая строка, в которой выполняется поиск. Обычно это большая из двух строк. Если вы хотите «найти X в Y», это компонент Y.
  • подстрока (обязательно): это искомая текстовая строка. Обычно это меньшая из двух строк. Если вы хотите «найти X в Y», это компонент X.
  • start_position (необязательно): это ненулевое целое число, указывающее, где в строковом значении следует начать поиск. По умолчанию 1, что является началом строки. Если оно отрицательное, функция ищет и считает с конца строки и идет назад.
  • вхождение (необязательно): это положительное целое число, указывающее, какое вхождение подстроки должна искать функция. Значение по умолчанию — 1, что означает, что функции ищут первое вхождение.

Поиск, выполняемый этой функцией, чувствителен к регистру.

Возвращаемое значение INSTR Oracle

Функция возвращает значение NUMBER, которое представляет собой число в строке, где находится подстрока. Нумерация начинается с 1, поэтому, если это первый символ, функция вернет 1.

Если подстрока не найдена, функция вернет ноль (0).

Примеры функций INSTR

Вот несколько примеров функции Oracle INSTR. Я считаю, что примеры — лучший способ узнать о коде, даже с объяснением выше.

Пример 1

В этом примере выполняется поиск первого вхождения буквы «e».

Пример 2

В этом примере выполняется поиск первого вхождения буквы «m» (обратите внимание, что она в нижнем регистре).

Пример 3

В этом примере выполняется поиск буквы «М» в верхнем регистре.

Пример 4

В этом примере выполняется поиск буквы «e», начиная с позиции 1 и находя второе вхождение.

Это буква "е" в конце слова "Мельбурн".

Пример 5

В этом примере выполняется поиск буквы «е», начиная с позиции 5, и находит первое вхождение.

Это буква "е" в конце слова "Мельбурн".

Пример 6

В этом примере выполняется поиск буквы «е», начиная с позиции 5, и находит второе вхождение.

Второго вхождения буквы «e» после этой точки не найдено.

Пример 7

В этом примере выполняется поиск строки "bou" во всей строке.

Пример 8

В этом примере выполняется поиск буквы «а», но поиск начинается с конца строки.

Первая найденная буква «а» — это значение в конце «Австралия».

Пример 9

В этом примере выполняется поиск буквы «а», но он начинается с конца строки и находит второе вхождение.

Это буква "а", которая находится в середине слова "Австралия", так как это второе вхождение, идущее в обратном направлении от строки.

Пример 10. Варианты INSTR

Вот несколько примеров функций вариантов INSTR.

В этом примере показано, как каждая из функций INSTR обрабатывает определенную строку. Я использовал функцию TO_MULTI_BYTE, чтобы показать различия с некоторыми функциями INSTR.

7 /td>
ОБРАЗЕЦ INSTRB_TEST INSTRC_TEST INSTR2_TEST INSTR4_TEST
Database Star table column row 19 7 7

Вы можете видеть, что некоторые значения отличаются.

Похожие функции

    – Аналогичен функции INSTR, но позволяет использовать регулярные выражения. – Возвращает длину предоставленной строки. – Заменяет одну строку другой строкой в ​​указанном значении. – Возвращает часть предоставленной строки на основе указанной позиции и длины.

Если вы хотите узнать больше о функциях SQL, вы можете найти полный список функций Oracle SQL здесь.

Оставить комментарий Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Читайте также: