Joomla 3.1 Templates by FatCow Coupon

Oracle SQL- основные функции работы со строками

Категория: Блог Опубликовано 23.05.2017

TRANSLATE
Функция TRANSLATE(str1, SRC, DEST) возвращает строку
Параметры :
str1 - строка которая будет преобразована 
SRC - символы исходные преобразования
DEST - в которые будет осуществляться преобразование
Описание 
преобразовывает каждый символ в последовательности SRC в символ в той же позиции в последовательности DEST
чтобы было более понятно, рассмотрим несколько примеров:

select TRANSLATE('EXAMPLEABCD!','ABCD','ИБЦД') from dual

-- EXИMPLEИБЦД!
символы 'ABCD' - преобразованы в ИБЦД , посл символов EXAMPLE осталась непреобразованной

 

select TRANSLATE('ANY BOSS DAY','ABCD','ИБЦД') from dual


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

select TRANSLATE('!ABCD!','!ABCD','$ИБЦД') from dual


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

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

select DECODE(trim(TRANSLATE('12322245','0123456789',' ')),null,0,1) ifdigit01 from dual


-- 0

select DECODE(trim(TRANSLATE('ФФФВАП012ВАП322245','0123456789',' ')),null,0,1) ifdigit01 from dual


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

SELECT INSTR('AAABAAAAABA','AB',1) FROM DUAL
-- 3
SELECT INSTR('AAABAAAAABA','AB',5) FROM DUAL
-- 9
SELECT INSTR('AAABAAAAABA','AB',1,1) FROM DUAL
-- 3
SELECT INSTR('AAABAAAAABA','AB',1,2) FROM DUAL
-- 9
SELECT INSTR('AAABAAAAABA','AAA',1,1) FROM DUAL
-- 1
SELECT INSTR('AAABAAAAABA','AAA',1,2) FROM DUAL
-- 5



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

-- рассмортим работу данной функции на примерах
SELECT SUBSTR('ABCDEF',2,3) FROM DUAL
-- BCD
-- в данном случае парамтетр LEN на задан поэтому выбираются все символы в строке начиная с pos
SELECT SUBSTR('ABCDEF',3) FROM DUAL

select substr('ABCDEF',-3) from dual;
-- DEF
--для того чтобы выделить последние символы в подстроке достаточно использовать отрицательный параметр pos



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

SELECT LENGTH('AAA') FROM DUAL
-- 3
SELECT LENGTH('AAABB') FROM DUAL
-- 5
SELECT LENGTH('AAABAAAAABA') FROM DUAL
-- 11



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

SELECT REPLACE('AБA','Б') FROM DUAL
-- AA

SELECT REPLACE('AAABB','AA','$$') FROM DUAL
-- $$ABB

SELECT REPLACE('AAABAAAAABA','AB',',ИНФО') FROM DUAL
-- AA,ИНФОAAAA,ИНФОA
Просмотров: 720