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

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

Базы данных

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

Описание

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

Синтаксис

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

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

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.

В этой части речь пойдет о функциях работы с текстовой информаци­ей, которые могут применяться в запросах и программном коде на языке PL/SQL.

Функция CONCAT(strl, str2)

Данная функция выполняет конкатенацию строк strl и str2. Если один из аргументов равен NULL, то он воспринимается как пустая строка. Если оба аргумента равны NULL, то функция возвращает NULL. Пример:

У попа была собака

Для конкатенации строк Oracle поддерживает специальный оператор конкатенации «||», который работает аналогично функции CONCAT, на­пример:

У попа была собака

У попа была собака

Не следует путать оператор конкатенации «||», эквивалентный вызо­ву функции CONCAT, и оператор «+», применяемый в арифметических операциях. В Oracle это разные операторы, но за счет автоматического приведения типов возможны трудноуловимые ошибки, например:

SELECT ‘5’ + ‘3’ x1
FROM dual

В данном случае возвращается числовое значение 8, а не текстовая строка «53». Это связано с тем, что, обнаружив арифметическую опе­рацию «+», Oracle автоматически пытается привести аргументы к типу NUMBER.

Функция LOWER преобразует все символы строки str в строчные. Пример:

Читайте также:  В службах нет центра обновления windows 10

SELECT LOWER(‘TeXt DATA’) X
FROM dual

Функция UPPER преобразует все символы строки str в прописные. Пример:

SELECT UPPER(‘TeXt DATA’) X
FROM dual

Возвращает строку str, в которой первые буквы всех слов преобразо­ваны в прописные. Функция удобна для форматирования полного имени при построении отчетов. Пример:

SELECT INITCAPCИваноВ петр сиДорович’) X
FROM dual

Функция LTRIM удаляет все символы с начала строки до первого сим­вола, которого нет в наборе символов set. По умолчанию set состоит из одного пробела и может не указываться. Функция RTRIM аналогич­на LTRIM, но удаляет символы, начиная от конца строки. Рассмотрим несколько примеров:

TeXt DATA

TeXt DATA

TeXt DATA

Функция REPLACE(str, search_str, [,replace_str])

Функция REPLACE осуществляет поиск образца search_str в строке str и каждое найденное вхождение заменяет на replace_str. По умолча­нию replace_str равен пустой строке, поэтому вызов функции REPLACE с двумя аргументами приводит к удалению всех найденных вхождений. Поиск подстроки ведется с учетом регистра. Пример:

SELECT REPLACE(‘У попа была собака’, ‘собака’, ‘кошка’) x1,
REPLACE(‘У попа была злая собака’, ‘злая’) х2,
REPLACE(‘У попа была собака’, ‘Собака’, ‘Кошка’) х3
FROM dual

У попа была кошка

У попа была собака

У попа была собака

Функция TRANSLATE(str, from_mask, to_mask)

Функция TRANSLATE анализирует строку str и заменяет в ней все символы, встречающиеся в строке from_mask, на соответствующие сим­волы из to_mask. Для корректной работы функции строки from_mask и to_mask должны иметь одинаковую длину или строка from_mask долж­на быть длиннее, чем to_mask. Если from_mask длиннее, чем to_mask, и в процессе обработки строки str обнаружатся символы, соответствующие одному из символов from_mask, и при этом им не найдется соответствия в to_mask, то такие символы будут удалены из строки str. Если передать from_mask или to_mask, равное NULL, то функция возвратит значение NULL. Сравнение производится с учетом регистра.

TEst 1!345

TEst 15

Данная функция удобна для решения ряда практических задач, свя­занных с перекодировкой символов или с поиском запрещенных симво­лов. Например, необходимо проанализировать пароль и выяснить, содер­жит ли он хотя бы одну цифру. Реализация данной проверки при помощи TRANSLATE имеет вид:

IF TRANSLATE(PassWd, ‘0123456789’, ‘*’) = PassWd THEN
ADD_ERR0R(‘Ошибка — Пароль должен содержать хотя бы одну цифру !’);
RETURN 1;
END IF;

Читайте также:  Какой багажник лучше люкс или атлант

Другой пример: идет подготовка числа к его преобразованию в NUMBER. Необходимо заменить разделители десятичных знаков «,» и «.» на «.» и удалить пробелы. Реализация данной операции при помощи TRANSLATE имеет вид:

123455.23

-123455.23

Функция SUBSTR(str, m [,n])

Функция SUBSTR возвращает фрагмент строки str, начиная с символа m длиной n символов. Длину можно не указывать — в этом случае возвра­щается строка от символа m и до конца строки str. Нумерация символов идет с 1. Если указать m = 0, то копирование все равно начнется с первого символа. Задание отрицательного значения m приводит к тому, что симво­лы отсчитываются от конца строки, а не от начала. Задание значений m, превышающих по абсолютному значению длину строки, приводит к тому, что функция возвращает NULL.

SELECT SUBSTR(‘У попа была собака’, 13) x1,
SUBSTR(‘У попа была собака’, -6) х2,
SUBSTR(‘Эto тестовый текст’, 5, 8) х3,
SUBSTR(‘У попа была собака’, 150) х4
FROM dual

собака

собака

текстовый

Функция INSTR(str, search_str [,n[,m]])

Функция INSTR возвращает позицию первого символа m-ro фрагмента строки str, совпадающего со строкой search_str. Сравнение ведется с n-го символа строки str, при сравнении учитывается регистр. По умолчанию n = m = 1, то есть поиск ведется от начала строки и возвращается позиция первого найденного фрагмента. В случае неуспешного поиска функция возвращает 0.

SELECT INSTR(‘y попа была собака’, ‘собака’) x1,
INSTR(‘y попа была собака’, ‘кошка’) х2,
INSTR(‘Это текст для демонстрации поиска текста’, ‘текст’, 1, 2) х3,
INSTR(‘11111000000001′, ‘1’, 7) х4
FROM dual

С данной функций, равно как и со всеми остальными в Oracle, часто допускаются типовые ошибки, связанные с обработкой значения NULL. Если str=NULL, то функция вернет NULL, а не ноль! Это необходимо учитывать при построении различных условий. Например, данный фраг­мент программы на PL/SQL как раз не учитывает эту особенность:

В данном случае правильно было бы написать так:

IF NVL(INSTR(TXT_VAR, ‘*’), 0) = 0 THEN
.
END IF;

Функции LENGTH (str) и LENGTHB (str)

Функция LENGTH (str) возвращает длину строки str в символах. Для пустой строки и значения NULL функция возвращает NULL, поэтому сов­местно с данной функцией рекомендуется использовать NVL.

Читайте также:  Как изменить цвет клавиатуры bloody

Функция LENGTHB аналогична функции LENGTH, но возвращает длину строки в байтах.

Возвращает ASCII-код первого символа строки str в случае применения кодировки ASCII и значение первого байта многобайтного символа при использовании кодировки на основе многобайтных символов. Пример:

SELECT ASCII(‘Test’) x1 FROM dual

Возвращает символ по его коду.

SELECT CHR(64) x1
FROM dual

© 2020 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

добавлено: 24 окт 12
понравилось:0
просмотров: 76406
комментов: 0

Подари, продай, обменяй — множество недорогих и отличных вещей объявления вместо AVITO — ВКонтакте

TRANSLATE

Функция TRANSLATE(str1, SRC, DEST) возвращает строку
Параметры :
str1 — строка которая будет преобразована
SRC — символы исходные преобразования
DEST — в которые будет осуществляться преобразование
Описание
преобразовывает каждый символ в последовательности SRC в символ в той же позиции в последовательности DEST
чтобы было более понятно, рассмотрим несколько примеров:
— EXИMPLEИБЦД!
символы ‘ABCD’ — преобразованы в ИБЦД , посл символов EXAMPLE осталась непреобразованной

— ИNY БOSS ДИY
символы ANY — ‘A’ — "И" = БОСС ; ‘B’ = "Б" ;DAY — ‘DA’ = ДИ

— $ИБЦД$
символы ‘ABCD’ — преобразованы в ИБЦД , восклицательный знак пробразован в $

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

— 1
Instr
INSTR(STR1, STR2, POSn , direction) — возвращает позицию STR2 в строке STR1
— где поиск осуществляется в позиции POSn
— в направлении direction
— параметры
— примеры

Substr
SUBSTR(STR1, POS, LEN) — выделяет LEN символов в строке str1 начиная с позиции POS
STR1 — оригинальная строка
POS — позиция с которой начинается выделение
NEWSUB — подстрока на которую заменяем по умолчанию ""

Length
length(str) — возвращает длинну строки str1 в символах

Replace
replace(SRCSTR,OLDSUB,NEWSUB) — функция возвращает пребразованную строку SRCSTR , где подстрока OLDSUB из строки SRCSTR заменяется на подсрорку NEWSUB
SRCSTR — оригинальная строка
OLDSUB — заменяемая подстрока
NEWSUB — подстрока на которую заменяем по умолчанию ""
— рассмортим работу данной функции на примерах

Ссылка на основную публикацию
Mikrotik dhcp lease script
Возникла задача получать уведомления при подключении новых (не санкционированных) клиентов к сети и автоматически добавлять их в списки блокировки (adress-list=lock)....
Imaqliq g box прошивка android
Кнопка «Вверх» - собственный плэйлист. Зелёная (либо влево) — система Синяя (или вправо) — сетьЖелтая (или вверх) — аудио/видео Красная...
Iskratel innbox e70 настройка
14/06/2018 Доступ на CPE осуществляется по IP адресу 192.168.0.1. Для входа используются учетные данные Пользователь: admin Пароль: По умолчанию CPE...
Mpc hc не может воспроизвести некоторые потоки
Несмотря на хороший функционал, Media Player иногда грешит пропаданием звука. У проблемы есть несколько путей решения разной сложности и с...
Adblock detector