Oracle PL/SQL •MySQL •SQL Server. Описание sql instr


INSTR ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

Узнайте, как использовать Oracle / PLSQL функцию INSTR с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL INSTR возвращает n-е вхождение подстроки в строке.

Синтаксис

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

INSTR( string, substring [, start_position [, nth_appearance ] ] )

Параметры или аргументы

string является строка для поиска. string может быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

substring подстрока для поиска в строке. substring может быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

start_position является положение символа в строке, с которого начнется поиск. Этот аргумент является необязательным. Если аргумент опущен, то по умолчанию 1. Первая позиция в строке 1. Если параметр start_position отрицательный, то функция INSTR рассчитывает позицию start_position в обратном направлении от конца строки, а затем ищет к началу строки.

nth_appearance является n-м вхождением подстроки. Аргумент не является обязательным. Если опущен, то по умолчанию 1.

Примечание

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

Применение

Функцию INSTR можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции INSTR и изучим, как использовать функцию INSTR в Oracle / PLSQL.

SQL> SELECT INSTR('На дворе трава', 'а') FROM DUAL; INSTR('НАДВОРЕТРАВА','А') ------------------------- 2 SQL> SELECT INSTR('На дворе трава', 'а', 1, 1) FROM DUAL; INSTR('НАДВОРЕТРАВА','А',1,1) ----------------------------- 2 SQL> SELECT INSTR('На дворе трава', 'а', 1, 2) FROM DUAL; INSTR('НАДВОРЕТРАВА','А',1,2) ----------------------------- 12 SQL> SELECT INSTR('На дворе трава', 'а', 1, 3) FROM DUAL; INSTR('НАДВОРЕТРАВА','А',1,3) ----------------------------- 14 SQL> SELECT INSTR('На дворе трава', 'а', -3, 2) FROM DUAL; INSTR('НАДВОРЕТРАВА','А',-3,2) ------------------------------ 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

SQL> SELECT INSTR('На дворе трава', 'а') FROM DUAL;

INSTR('НАДВОРЕТРАВА','А')

-------------------------

                        2

 

SQL> SELECT INSTR('На дворе трава', 'а', 1, 1) FROM DUAL;

INSTR('НАДВОРЕТРАВА','А',1,1)

-----------------------------

                            2

 

SQL> SELECT INSTR('На дворе трава', 'а', 1, 2) FROM DUAL;

INSTR('НАДВОРЕТРАВА','А',1,2)

-----------------------------

                           12

 

SQL> SELECT INSTR('На дворе трава', 'а', 1, 3) FROM DUAL;

INSTR('НАДВОРЕТРАВА','А',1,3)

-----------------------------

                           14

 

SQL> SELECT INSTR('На дворе трава', 'а', -3, 2) FROM DUAL;

INSTR('НАДВОРЕТРАВА','А',-3,2)

------------------------------

                             2

oracleplsql.ru

REGEXP_INSTR ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

В этом учебном пособии вы узнаете, как использовать функцию REGEXP_INSTR Oracle/PLSQL с синтаксисом и примерами.

Описание

Функция Oracle/PLSQL REGEXP_INSTR является расширением функции INSTR. Она возвращает местоположение шаблона регулярного выражения в строке. Эта функция, представленная в Oracle 10g, позволит вам найти подстроку в строке, используя сопоставление шаблонов регулярных выражений.

Синтаксис

Синтаксис функции Oracle/PLSQL REGEXP_INSTR:

REGEXP_INSTR( string, pattern [, start_position [, nth_appearance [, return_option [, match_parameter [, sub_expression ] ] ] ] ] )

Параметры или аргументы

stringСтрока для поиска. Строкой могут быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

pattern

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

Значение Описание
^ Соответствует началу строки. При использовании match_parameter с m, соответствует началу строки в любом месте в пределах выражения.
$ Соответствует концу строки. При использовании match_parameter с m, соответствует концу строки в любом месте в пределах выражения.
* Соответствует нолю или более вхождений.
+ Соответствует одному или более вхождений.
? Соответствует нолю или одному вхождению.
. Соответствует любому символу, кроме NULL.
| Используется как «OR», чтобы указать более одной альтернативы.
[ ] Используется для указания списка совпадений, где вы пытаетесь соответствовать любому из символов в списке.
[^ ] Используется для указания списка nonmatching, где вы пытаетесь соответствовать любому символу, за исключением тех кто в списке.
( ) Используется для групповых выражений в качестве подвыражений.
{m} Соответствует m раз.
{m,} Соответствие как минимум m раз.
{m,n} Соответствие как минимум m раз, но не более n раз.
\n n представляет собой число от 1 до 9. Соответствует n-му подвыражению находящемуся в ( ) перед \n.
[..] Соответствует одному сопоставлению элемента, который может быть более одного символа.
[::] Соответствует классу символов.
[==] Соответствует классу эквивалентности
\d Соответствует цифровому символу.
\D Соответствует не цифровому символу.
\w Соответствует текстовому символу.
\W Соответствует не текстовому символу.
\s Соответствует символу пробел.
\S Соответствует не символу пробел.
\A Соответствует началу строки или соответствует концу строки перед символом новой строки.
\Z Соответствует концу строки.
*? Соответствует предыдущему шаблону ноль или более вхождений.
+? Соответствует предыдущему шаблону один или более вхождений.
?? Соответствует предыдущему шаблону ноль или одному вхождению.
{n}? Соответствует предыдущему шаблону n раз.
{n,}? Соответствует предыдущему шаблону, по меньшей мере n раз.
{n,m}? Соответствует предыдущему шаблону, по меньшей мере n раз, но не более m раз.

start_positionНеобязательный. Это позиция в строке, откуда начнется поиск. Если этот параметр опущен, по умолчанию он равен 1, который является первой позицией в строке.nth_appearanceНеобязательный. Это n-ое вхождение шаблона в строке. Если этот параметр опущен, по умолчанию он равен 1, который является первым вхождением шаблона в строке.return_optionНеобязательный. Если return_option обозначен 0, то возвращается позиция первого символа входящего в шаблон. Если return_option обозначен 1, то возвращается позиция после символа входящего в шаблон. Если этот параметр опущен, он по умолчанию равен 0.

match_parameterНеобязательный. Это позволяет изменять поведение соответствия для условия REGEXP_INSTR. Это может быть комбинацией следующих значений:

Значение Описание
‘c’ Выполняет чувствительное к регистру согласование.
‘i’ Выполняет не чувствительное к регистру согласование.
‘n’ Позволяет период символа (.) для соответствия символа новой строки. По умолчанию, период метасимволы.
‘m’ Выражение допускает, что есть несколько строк, где ^ это начало строки, а $ это конец строки, независимо от позиции этих символов в выражении. По умолчанию предполагается, что выражение в одной строке.
‘x’ Игнорируются символы пробелов. По умолчанию, символы пробелов совпадают, как и любой другой символ.

subexpressionНеобязательный. Используется, когда шаблон имеет подвыражения, и вы хотите указать, какое подвыражение в шаблоне является целью. Это целочисленное значение от 0 до 9, указывающее, что подвыражение соответствует шаблону.

Функция REGEXP_INSTR возвращает числовое значение.Если функция REGEXP_INSTR не обнаруживает никакого соответствия шаблону, она вернет 0.

Примечание

Если в параметре match_parameter имеются конфликтующие значения, функция REGEXP_INSTR будет использовать последнее значение.См. Также функцию INSTR.

Применение

Функцию REGEXP_INSTR можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g

Пример совпадения по единичному символу

Начнем с рассмотрения простейшего случая. Давайте найдем позицию первого символа ‘o’ в строке.Например:

SELECT REGEXP_INSTR ('Oracle Cloud Infrastructure', 'o') FROM dual;

SELECT REGEXP_INSTR ('Oracle Cloud Infrastructure', 'o') FROM dual;

Этот пример вернет 10, потому что он выполняет поиск по регистру ‘o’ с учетом регистра. Поэтому он пропускает символы ‘O’ и находит первую ‘o’ в 10-й позиции.

Если мы захотим включить в результат как маленькую ‘o’, так и большую ‘O’ и выполнить поиск без учета регистра, то изменим наш запрос следующим образом:

SELECT REGEXP_INSTR ('Oracle Cloud Infrastructure', 'o', 1, 1, 0, 'i') FROM dual;

SELECT REGEXP_INSTR ('Oracle Cloud Infrastructure', 'o', 1, 1, 0, 'i') FROM dual;

Теперь, поскольку мы предоставили start_position = 1, nth_appearance = 1, return_option = 0 и match_parameter = ‘i’, запрос вернет 1 в качестве результата. На этот раз функция будет искать значения ‘o’ и ‘O’ и вернет первое вхождение.

Если бы мы захотели найти первое вхождение символа ‘o’ в столбце, то мы могли бы попробовать что-то вроде этого (без учета регистра):

SELECT REGEXP_INSTR (last_name, 'o', 1, 1, 0, 'i') AS First_Occurrence FROM contacts;

SELECT REGEXP_INSTR (last_name, 'o', 1, 1, 0, 'i') AS First_Occurrence FROM contacts;

Это вернет первое вхождение значений ‘o’ или ‘O’ в поле last_name из таблицы contacts.

Пример совпадения нескольких символов

Рассмотрим, как мы будем использовать функцию REGEXP_INSTR для соответствия многосимвольной схеме.Например:

SELECT REGEXP_INSTR ('The example shows how to use the REGEXP_INSTR function', 'ow', 1, 1, 0, 'i') FROM dual; --Результат: 15

SELECT REGEXP_INSTR ('The example shows how to use the REGEXP_INSTR function', 'ow', 1, 1, 0, 'i') FROM dual;

--Результат: 15

В этом примере будет возвращено первое вхождение ‘ow’ в строке. Оно будет соответствовать ‘ow’ в слове shows.

Мы могли бы изменить начальную позицию поиска, чтобы выполнить поиск, начиная с середины строки.Например:

SELECT REGEXP_INSTR ('The example shows how to use the REGEXP_INSTR function', 'ow', 16, 1, 0, 'i') FROM dual; --Результат: 20

SELECT REGEXP_INSTR ('The example shows how to use the REGEXP_INSTR function', 'ow', 16, 1, 0, 'i') FROM dual;

--Результат: 20

В этом примере поиск шаблона ‘ow’ в строке начнется с позиции 16. В этом случае поиска шаблона он пропустит первые 15 символов строки.

Рассмотрим, как мы будем использовать функцию REGEXP_INSTR со столбцом таблицы и искать несколько символов.Например:

SELECT REGEXP_INSTR (other_number, 'the', 1, 1, 0, 'i') FROM contacts;

SELECT REGEXP_INSTR (other_number, 'the', 1, 1, 0, 'i') FROM contacts;

В этом примере мы будем искать шаблон в поле other_number в таблице contacts.

Пример сопоставления несколько альтернатив.

Следующий пример, который мы рассмотрим, включает использование | шаблон. | шаблон используется как «ИЛИ», чтобы указать несколько альтернатив.Например:

SELECT REGEXP_INSTR ('AeroSmith', 'a|e|i|o|u') FROM dual; --Результат: 2

SELECT REGEXP_INSTR ('AeroSmith', 'a|e|i|o|u') FROM dual;

 

--Результат: 2

Этот пример вернет 2, потому что он ищет первую гласную (a, e, i, o или u) в строке. Поскольку мы не указали значение match_parameter, функция REGEXP_INSTR выполнит поиск с учетом регистра, что означает, что символ ‘A’ в ‘AeroSmith’ не будет сопоставлен.

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

SELECT REGEXP_INSTR ('AeroSmith', 'a|e|i|o|u', 1, 1, 0, 'i') FROM dual; --Результат: 1

SELECT REGEXP_INSTR ('AeroSmith', 'a|e|i|o|u', 1, 1, 0, 'i') FROM dual;

 

--Результат: 1

Теперь, поскольку мы предоставили match_parameter = ‘i’, запрос вернет в качестве результата 1. На этот раз ‘A’ в ‘AeroSmith’ будет сопоставляться.

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

Итак, допустим, у нас есть таблица contact со следующими данными:

contact_id last_name
1000 AeroSmith
2000 Joy
3000 Scorpions

Теперь давайте запустим следующий запрос:

SELECT contact_id, last_name, REGEXP_INSTR (last_name, 'a|e|i|o|u', 1, 1, 0, 'i') AS first_occurrence FROM contacts;

SELECT contact_id, last_name, REGEXP_INSTR (last_name, 'a|e|i|o|u', 1, 1, 0, 'i') AS first_occurrence

FROM contacts;

Результаты, которые будут возвращены запросом:

contact_id last_name first_occurrence
1000 AeroSmith 1
2000 Joy 2
3000 Scorpions 3

Пример совпадений на основе параметра nth_occurrence

Следующий пример, который мы рассмотрим, включает параметр nth_occurrence. Параметр nth_occurrence позволяет вам выбрать, в каком месте шаблона вы хотите вернуть позицию.

Первое вхождение

Давайте посмотрим, как найти первое вхождение шаблона в строку.Например:

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 1, 0, 'i') FROM dual; --Результат: 2

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 1, 0, 'i') FROM dual;

 

--Результат: 2

Этот пример вернет 2, потому что он ищет первое вхождение гласного (a, e, i, o или u) в строке.

Второе вхождение

Затем мы будем искать второе вхождение шаблона в строке.Например:

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 2, 0, 'i') FROM dual; --Результат: 4

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 2, 0, 'i') FROM dual;

 

--Результат: 4

Этот пример вернет 4, потому что он ищет второе вхождение гласного (a, e, i, o или u) в строке.

Третье вхождение

Например:

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 3, 0, 'i') FROM dual; --Результат: 6

SELECT REGEXP_INSTR ('Regular expression', 'a|e|i|o|u', 1, 3, 0, 'i') FROM dual;

 

--Результат: 6

Этот пример вернет 6, потому что он ищет третье вхождение гласного (a, e, i, o или u) в строке.

Пример параметра return_option

Наконец, давайте посмотрим, как параметр return_option влияет на наши результаты.

Например:

SELECT REGEXP_INSTR ('Regular expression', 'exp', 1, 1, 0, 'i') FROM dual; --Результат: 9

SELECT REGEXP_INSTR ('Regular expression', 'exp', 1, 1, 0, 'i')

FROM dual;

--Результат: 9

В этом базовом примере мы ищем шаблон в строке, и поиск не зависит от регистра. Мы указали параметр return_option = 0, что означает, что будет возвращена позиция первого символа шаблона.

Теперь давайте изменим параметр return_option на 1 и посмотрим, что произойдет.Например:

SELECT REGEXP_INSTR ('Regular expression', 'exp', 1, 1, 1, 'i') FROM dual; --Результат: 12

SELECT REGEXP_INSTR ('Regular expression', 'exp', 1, 1, 1, 'i') FROM dual;

 

--Результат: 12

Параметр return_option = 1 сообщает функции REGEXP_INSTR, чтобы вернуть позицию символа, следующего за совпадающим шаблоном. В этом примере функция вернет 12.

oracleplsql.ru

INSTR4 ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

Узнайте, как использовать Oracle / PLSQL функцию INSTR4 с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL INSTR4 возвращает вхождение подстроки в строку, используя UCS4 кодовые точки.

Синтаксис

Синтаксис функции Oracle / PLSQL INSTR4:

INSTR4( string, substring [, start_position [, nth_appearance ] ] )

Параметры или аргументы

string — строка для поиска. string может быть CHAR, VARCHAR2, NCHAR или NVARCHAR2. string не может быть CLOB или NCLOB.

substring подстрока для поиска в строке. substring может быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

start_position является положение символа в строке, с которого начинается поиск. Этот аргумент является необязательным. Если аргумент опущен, то по умолчанию 1. Первая позиция в строке 1. Если start_position отрицательный, то функция INSTR4 рассчитывает позицию start_position в обратном направлении от конца строки, а затем ищет к началу строки.

nth_appearance является n-м вхождением подстроки. Аргумент не является обязательным. Если опущен, то по умолчанию 1.

Примечание

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

Применение

Функцию INSTR4 можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции INSTR4 и изучим, как использовать функцию INSTR4 в Oracle / PLSQL.

SQL> SELECT INSTR4('НаДвореТрава', 'а') FROM DUAL; INSTR4('НАДВОРЕТРАВА','А') -------------------------- 2 SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 1) FROM DUAL; INSTR4('НАДВОРЕТРАВА','А',1,1) ------------------------------ 2 SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 2) FROM DUAL; INSTR4('НАДВОРЕТРАВА','А',1,2) ------------------------------ 10 SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 3) FROM DUAL; INSTR4('НАДВОРЕТРАВА','А',1,3) ------------------------------ 12 SQL> SELECT INSTR4('НаДвореТрава', 'а', -3, 2) FROM DUAL; INSTR4('НАДВОРЕТРАВА','А',-3,2 ------------------------------ 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

SQL> SELECT INSTR4('НаДвореТрава', 'а') FROM DUAL;

INSTR4('НАДВОРЕТРАВА','А')

--------------------------

                         2

 

SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 1) FROM DUAL;

INSTR4('НАДВОРЕТРАВА','А',1,1)

------------------------------

                             2

 

SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 2) FROM DUAL;

INSTR4('НАДВОРЕТРАВА','А',1,2)

------------------------------

                            10

 

SQL> SELECT INSTR4('НаДвореТрава', 'а', 1, 3) FROM DUAL;

INSTR4('НАДВОРЕТРАВА','А',1,3)

------------------------------

                            12

 

SQL> SELECT INSTR4('НаДвореТрава', 'а', -3, 2) FROM DUAL;

INSTR4('НАДВОРЕТРАВА','А',-3,2

------------------------------

                             2

oracleplsql.ru

INSTR2 ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

Узнайте, как использовать Oracle / PLSQL функцию INSTR2 с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL INSTR2 возвращает вхождение подстроки в строку, используя UCS2 кодовые точки.

Синтаксис

Синтаксис функции Oracle / PLSQL INSTR2:

INSTR2( string, substring [, start_position [, nth_appearance ] ] )

Параметры или аргументы

string — строка для поиска. string может быть CHAR, VARCHAR2, NCHAR или NVARCHAR2. string не может быть CLOB или NCLOB.

substring подстрока для поиска в строке. substring может быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

start_position является положение символа в строке, с которого начинается поиск. Этот аргумент является необязательным. Если аргумент опущен, то по умолчанию 1. Первая позиция в строке 1. Если start_position отрицательный, то функция INSTR2 рассчитывает позицию start_position в обратном направлении от конца строки, а затем ищет к началу строки.

nth_appearance является n-м вхождением подстроки. Аргумент не является обязательным. Если опущен, то по умолчанию 1.

Примечание

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

Применение

Функцию INSTR2 можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции INSTR2 и изучим, как использовать функцию INSTR2 в Oracle / PLSQL.

SQL> SELECT INSTR2('НаДвореТрава', 'а') FROM DUAL; INSTR2('НАДВОРЕТРАВА','А') -------------------------- 2 SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 1) FROM DUAL; INSTR2('НАДВОРЕТРАВА','А',1,1) ------------------------------ 2 SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 2) FROM DUAL; INSTR2('НАДВОРЕТРАВА','А',1,2) ------------------------------ 10 SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 3) FROM DUAL; INSTR2('НАДВОРЕТРАВА','А',1,3) ------------------------------ 12 SQL> SELECT INSTR2('НаДвореТрава', 'а', -3, 2) FROM DUAL; INSTR2('НАДВОРЕТРАВА','А',-3,2 ------------------------------ 2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

SQL> SELECT INSTR2('НаДвореТрава', 'а') FROM DUAL;

INSTR2('НАДВОРЕТРАВА','А')

--------------------------

                         2

 

SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 1) FROM DUAL;

INSTR2('НАДВОРЕТРАВА','А',1,1)

------------------------------

                             2

 

SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 2) FROM DUAL;

INSTR2('НАДВОРЕТРАВА','А',1,2)

------------------------------

                            10

 

SQL> SELECT INSTR2('НаДвореТрава', 'а', 1, 3) FROM DUAL;

INSTR2('НАДВОРЕТРАВА','А',1,3)

------------------------------

                            12

 

SQL> SELECT INSTR2('НаДвореТрава', 'а', -3, 2) FROM DUAL;

INSTR2('НАДВОРЕТРАВА','А',-3,2

------------------------------

                             2

oracleplsql.ru

Функция InStr - Access

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.

Некоторые примеры

Синтаксис

Instr ([начало, ]строка1, строка2[, сравнение] )

Функция InStr имеет следующие аргументы:

Аргумент

Описание

начало

Необязательный аргумент. Числовое выражение, которое задает начальное положение для каждого поиска. Если аргумент не задан, поиск начинается с первого символа. Если аргумент начало содержит значение NULL, возникает ошибка. Если задан аргумент сравнение, аргумент начало является обязательным.

строка1

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

строка2

Обязательный аргумент. Искомое строковое выражение.

сравнение

Необязательный аргумент. Задает тип сравнения строк. Если аргумент сравнение содержит значение NULL, возникает ошибка. Если аргумент сравнение опущен, тип сравнения определяется параметром OptionCompare. Укажите допустимый LCID (код языка), чтобы использовать для сравнения правила, определяемые языковым стандартом.

Совет: В Access 2010 построитель выражений включает функцию IntelliSense, которая указывает требуемые аргументы. 

Параметры

Аргумент сравнение может принимать следующие значения:

Константа

Значение

Описание

vbUseCompareOption

–1

Выполняется сравнение с помощью параметра инструкции Option Compare.

vbBinaryCompare

0

Выполняется двоичное сравнение.

vbTextCompare

1

Выполняется текстовое сравнение.

vbDatabaseCompare

2

Только в Microsoft Office Access 2007. Выполняется сравнение на основе сведений из базы данных.

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

Если

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

строка1 является пустой

0

строка1 равна NULL

NULL

строка2 является пустой

начало

строка2 равна NULL

NULL

строка2 не найдена

0

строка2 найдена в строке1

Позиция найденного соответствия

начало > строка2

0

Замечания

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

Примеры

Использование функции InStr в выражении.    Функцию InStr можно использовать в любых выражениях. Например, если требуется определить позицию первой точки (.) в поле, которое содержит IP-адрес (IPAddress), можно использовать функцию InStr для его поиска:

InStr(1,[IPAddress],".")

Функция InStr проверяет каждое значение в поле IPAddress и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.

Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:

Left([IPAddress],(InStr(1,[IPAddress],".")-1))

В этом примере функция InStr(1,[IPAddress],".") возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left получает эти символы из левой части поля IPAddress, возвращая значение 10.

Использование функции InStr в коде VBA    

Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.

Dim SearchString, SearchChar, MyPosSearchString ="XXpXXpXXPXXP" ' String to search in.SearchChar = "P" ' Search for "P".' A textual comparison starting at position 4. Returns 6.MyPos = Instr(4, SearchString, SearchChar, 1) ' A binary comparison starting at position 1. Returns 9.MyPos = Instr(1, SearchString, SearchChar, 0)' Comparison is binary by default' (last argument is omitted).MyPos = Instr(SearchString, SearchChar) ' Returns 9.MyPos = Instr(1, SearchString, "W") ' Returns 0.

support.office.com

Работа со строками в Oracle (PL/SQL) / Осваиваем Oracle и PL/SQL / КБ СОФТ СТУДИЯ

Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции работы со строками которые встречались мне в работе, и будут полезны всем кто работает с Oracle.

CONCAT — Объединяет две строки

SQL> select concat('Пётр ','первый') from dual; CONCAT('ПЁТР','ПЕРВЫЙ') ----------------------- Пётр первый LOWER — Преобразует все символы в нижний регистрSQL> select lower('Петр Первый') from dual; LOWER('ПЕТРПЕРВЫЙ') --------------------- петр первый

UPPER — Преобразует все символы строки в верхний регистр

SQL> select upper('Петр Первый') from dual; UPPER('ПЕТРПЕРВЫЙ') --------------------- ПЕТР ПЕРВЫЙ

INITCAP — Преобразует первый символ к верхнему регистру а остальные к нижнему

SQL> select initcap('петр') from dual; INITCAP('ПЕТР') --------------- Петр

TRIM — Удаляет заданный символ из строки Синтаксис:

TRIM( [ [ LEADING | TRAILING | BOTH ] удаляемый_символ FROM ] строка_текста ) -- LEADING – удалить символы вначале строки. -- TRAILING – удалить символы с конца строки. -- BOTH – удалить символы и в начале строки и с конца строки. --Если не указано что удалять, то удаляются пробелы. Примеры:SQL> select trim(' Петр 1 ') from dual; TRIM('ПЕТР1') ------------- Петр 1 SQL> select trim(' ' from ' Петр 1 ') from dual; TRIM(''FROM'ПЕТР1') ------------------- Петр 1 SQL> select trim(leading '*' from '***Петр 1') from dual; TRIM(LEADING'*'FROM'***ПЕТР1') ------------------------------ Петр 1 SQL> select trim(trailing '1' from 'Петр 1') from dual; TRIM(TRAILING'1'FROM'ПЕТР1') ---------------------------- Петр SQL> select trim(both '1' from '1 Петр 1') from dual; TRIM(BOTH'1'FROM'1ПЕТР1') ------------------------- Петр

LTRIM — Удаляет заданные символы слева Синтаксис:

LTRIM( изменяемая_строка, [ набор_символов ] ) --Если не указано что удалять, то удаляются пробелы Примеры:SQL> select ltrim(' Петр 1') from dual; LTRIM('ПЕТР1') -------------- Петр 1 SQL> select ltrim(' Петр 1', ' ') from dual; LTRIM('ПЕТР1','') ----------------- Петр 1 SQL> select ltrim('12233Петр 1', '123') from dual; LTRIM('12233ПЕТР1','123') ------------------------- Петр 1

RTRIM — Удаляет заданные символы справа Синтаксис:

RTRIM( изменяемая_строка, [ набор_символов ] ) --Если не указано что удалять, то удаляются пробелы Примеры:SQL> select rtrim('Петр 1 ') from dual; RTRIM('ПЕТР1') -------------- Петр 1 SQL> select rtrim('Петр 1 ', ' ') from dual; RTRIM('ПЕТР1','') ----------------- Петр 1 SQL> select rtrim('Петр 123423', '234') from dual; RTRIM('ПЕТР123423','234') ------------------------- Петр 1

RPAD — Дополняет строку справа до указанного размера заданными символами Синтаксис:

RPAD( исходная_строка, длина_строки, [ добавляемый_символ ] ) -- Если добавляемый символ не указан то строка дополняется пробелами -- Если исходный размер строки более заданного то строка будет обрезана по заданный размер Примеры:SQL> select rpad('Петр', 6) from dual; RPAD('ПЕТР',6) -------------- Петр SQL> select rpad('Петр', 6, '_') from dual; RPAD('ПЕТР',6,'_') ------------------ Петр__ SQL> select rpad('Петр', 3) from dual; RPAD('ПЕТР',3) -------------- Пет

LPAD — Дополняет строку слева до указанного размера заданными символами Синтаксис:

LPAD( исходная_строка, длина_строки, [ добавляемый_символ ] ) -- Если добавляемый символ не указан то строка дополняется пробелами -- Если исходный размер строки более заданного то строка будет обрезана по заданный размер Примеры:SQL> select lpad('Петр', 6) from dual; LPAD('ПЕТР',6) -------------- Петр SQL> select lpad('Петр', 6, '_') from dual; LPAD('ПЕТР',6,'_') ------------------ __Петр SQL> select lpad('Петр', 3, '_') from dual; LPAD('ПЕТР',3,'_') ------------------ Пет

REPLACE — Заменяет некоторую последовательность символов в строке другим набором символов Синтаксис:

REPLACE( исходная_строка, исходная_подстрока, [ новая_подстрока ] ) -- Если новая_строка не задана то из исходной_строки будут просто удалены все вхождения исходной_подстроки. Примеры:SQL> select replace('0000Петр', '0') from dual; REPLACE('0000ПЕТР','0') ----------------------- Петр SQL> select replace('0000Петр', '0', '1') from dual; REPLACE('0000ПЕТР','0','1') --------------------------- 1111Петр SQL> select replace('0012312300Петр', '123', '1') from dual; REPLACE('0012312300ПЕТР','123' ------------------------------ 001100Петр SQL> select replace('0012312300Петр', '123') from dual; REPLACE('0012312300ПЕТР','123' ------------------------------ 0000Петр

TRANSLATE Заменяет символы в исходной строке — сопоставляя их с другим набором символов. (смотреть пример, там понятно.) Синтаксис:

TRANSLATE( исходная_строка, исходный_набор_символов, новый_набор_символов ) Пример:SQL> select translate('000111000222333', '123', '567') from dual; TRANSLATE('000111000222333','1 ------------------------------ 000555000666777 SQL> select translate('000111qa00zx0222333', '123zxqa', '567qazx') from dual; TRANSLATE('000111QA00ZX0222333 ------------------------------ 000555zx00qa0666777

SUBSTR — Возвращает подстроку из строки Синтаксис:

SUBSTR( исходная_строка, начальная_позиция, [ длина_подстроки ] ) -- Если начальная_позиция отрицательная - то отсчет идет от конца строки -- Если начальная_позиция равна 0 то считается что начальная позиция равна 1 -- Если начальная_позиция положительная - то отсчет идет от начала строки -- Если длина_подстроки отрицательная то функция вернет NULL Примеры:SQL> select substr('000111qa00zx0222333', 3, 5) from dual; SUBSTR('000111QA00ZX0222333',3 ------------------------------ 0111q SQL> select substr('000111qa00zx0222333', -10, 5) from dual; SUBSTR('000111QA00ZX0222333',- ------------------------------ 0zx02

INSTR — Возвращает N-ное вхождение подстроки в исходной строке Синтаксис:

INSTR( исходная_строка, подстрока [, стартовая_позиция [, номер_искомой_позиции ] ] ) -- стартовая_позиция - это позиция с которой начнется поиск подстроки, если не задана то с первой -- номер_искомой_позиции - номер включения которое надо найти, если не задан то первый Примеры:SQL> select instr('000111qa00zx0222333', '1', 1,3) from dual; INSTR('000111QA00ZX0222333','1 ------------------------------ 6 SQL> select instr('000111qa00zx0222333', '0', 1,3) from dual; INSTR('000111QA00ZX0222333','0 ------------------------------ 3 SQL> select instr('000111qa00zx0222333', '0', 1,5) from dual; INSTR('000111QA00ZX0222333','0 ------------------------------ 10

LENGTH — Возвращает размер строки

SQL> select length('Пётр первый') from dual; LENGTH('ПЁТРПЕРВЫЙ') -------------------- 11 SQL> select length('Пётр первый - Великий') from dual; LENGTH('ПЁТРПЕРВЫЙ-ВЕЛИКИЙ') ---------------------------- 21

VSIZE — Возвращает длину строки в байтах

SQL> select vsize('Test symbols') from dual; VSIZE('TESTSYMBOLS') -------------------- 12 SQL> select vsize('Пётр') from dual; VSIZE('ПЁТР') ------------- 8

ASCII — Возвращает ASCII код первого (левого) символа строки

SQL> select ascii('2') from dual; ASCII('2') ---------- 50 SQL> select ascii('a') from dual; ASCII('A') ---------- 97 SQL> select ascii('aza') from dual; ASCII('AZA') ------------ 97

CHR — Функция противоположная ASCII — возвращает символ из кода

SQL> select chr(50) from dual; CHR(50) ------- 2 SQL> select chr(97) from dual; CHR(97) ------- a

REVERSE — Переворачивает строку задом на перед

SQL> select reverse('12345') from dual; REVERSE('12345') ---------------- 54321 SQL> select reverse('Test symbols') from dual; REVERSE('TESTSYMBOLS') ---------------------- slobmys tseT

Дополнительно:

  • TO_DATE — Преобразование строки в формат DATE (Время).
  • TO_NUMBER — Преобразование строки в формат NUMBER (Число).
  • TO_CHAR — Преобразование числа или даты в строку.

На этом пока всё.

kbss.ru

SUBSTR ФУНКЦИЯ | Oracle PL/SQL •MySQL •SQL Server

Узнайте, как использовать Oracle / PLSQL функцию SUBSTR с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL SUBSTR позволяет извлекать подстроку из строки.

Синтаксис

Синтаксис функции Oracle / PLSQL SUBSTR:

SUBSTR( string, start_position, [ length ] )

Параметры или аргументы

string исходная строка.start_position позиция для начала извлечения подстроки. Первая позиция в строке всегда равна 1.length не является обязательным. Определяет количество символов для извлечения. Если этот параметр не указан, функция SUBSTR вернет всю строку.

Примечание

  • Если start_position равно 0, то функция SUBSTR примет параметр start_position как 1 (то есть: первая позиция в строке).
  • Если start_position является положительным числом, то функция SUBSTR начинается с начала строки.
  • Если start_position является отрицательным числом, то функция SUBSTR начинается с конца строки и считает в обратном направлении.
  • Если длина является отрицательным числом, то функция SUBSTR возвращает значение NULL.

Применение

Функцию SUBSTR можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции SUBSTR и изучим, как использовать функцию SUBSTR в Oracle / PLSQL.

SQL> SELECT SUBSTR('This is a test', 6, 2) FROM DUAL; SUBSTR('THISISATEST',6,2) ------------------------- is SQL> SELECT SUBSTR('This is a test', 6) FROM DUAL; SUBSTR('THISISATEST',6) ----------------------- is a test SQL> SELECT SUBSTR('КакЧертИзТабакерки', 1, 3) FROM DUAL; SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',1, ------------------------------ Как SQL> SELECT SUBSTR('КакЧертИзТабакерки', -15, 4) FROM DUAL; SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-1 ------------------------------ Черт SQL> SELECT SUBSTR('КакЧертИзТабакерки', -11, 2) FROM DUAL; SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-1 ------------------------------ Из SQL> SELECT SUBSTR('КакЧертИзТабакерки', -9, 9) FROM DUAL; SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-9 ------------------------------ Табакерки

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

SQL> SELECT SUBSTR('This is a test', 6, 2) FROM DUAL;

SUBSTR('THISISATEST',6,2)

-------------------------

is

 

SQL> SELECT SUBSTR('This is a test', 6) FROM DUAL;

SUBSTR('THISISATEST',6)

-----------------------

is a test

 

SQL> SELECT SUBSTR('КакЧертИзТабакерки', 1, 3) FROM DUAL;

SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',1,

------------------------------

Как

 

SQL> SELECT SUBSTR('КакЧертИзТабакерки', -15, 4) FROM DUAL;

SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-1

------------------------------

Черт

 

SQL> SELECT SUBSTR('КакЧертИзТабакерки', -11, 2) FROM DUAL;

SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-1

------------------------------

Из

 

SQL> SELECT SUBSTR('КакЧертИзТабакерки', -9, 9) FROM DUAL;

SUBSTR('КАКЧЕРТИЗТАБАКЕРКИ',-9

------------------------------

Табакерки

oracleplsql.ru