Pl sql substr: MySQL функция SUBSTRING — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Поиск по шаблону с помощью функции REGEXP_INSTR
В этом примере функция REGEXP_INSTR используется для поиска в адресе улицы местоположения первой буквы независимо от того, является она прописной или строчной.
Обратите внимание, что выражение [:<class>:]
заключает в себе класс символов и соответствует любому символу из этого класса. Выражение [:alpha:]
соответствует любой букве. На экране показаны неполные результаты.
В выражении, используемом в запросе '[[:alpha:]]'
:
[
открывает выражение.[:alpha:]
указывает на класс символов (буквы).]
закрывает выражение.
Примечание. Оператор класса символов POSIX
позволяет осуществлять в списке символов поиск выражения, являющегося элементом конкретного класса символов POSIX
. Этот оператор может применяться для поиска особого форматирования, например прописных букв, или с его помощью можно искать специальные символы, такие как цифры или знаки пунктуации. указывает оператор NOT.
указывает пробел.
]
закрывает выражение.
+
указывает 1 или более.
указывает пробел.
Далее: Создание Новой Таблицы: Пример
Регулярные выражения в Oracle 11G
Регулярные выражения являются очень полезным механизмом, многих языков программирования. До Версии 10g в Oracle регулярки не было, и приходилось обходиться обычными строковыми функциями поиска подстроки в строке, что было не всегда удобно. В 11g к уже существующим функциям по работе с регулярными выражениями добавилась ещё одна REGEXP_COUNT и расширился функционал 2х старых REGEXP_INSTR и REGEXP_SUBSTR.
Дальше перечислены функции, которые работают с регулярными выражениями в Oracle и приведены примеры их использования.
- REGEXP_LIKE(source_char, pattern [, match_param ])
source_char — текст, в котором выполняется поиск
pattern — регулярное выражение
match_param — модификаторы, изменяющие стандартный механизм сопоставления
Эта функция определяет, соответствует ли строка заданному шаблону. Ste(v|ph)en$’)
ORDER BY first_name, last_name;
FIRST_NAME LAST_NAME
——————— ————————-
Steven King
Steven Markle
Stephen Stiles
- REGEXP_COUNT (source_char, pattern [, position [, match_param]]) (новинка в Oracle 11G)
source_char — текст, в котором выполняется поиск
pattern — регулярное выражение
position — позиция в строке, с которой необходимо начать поиск (по умолчанию 1)
match_param — модификаторы, изменяющие стандартный механизм сопоставления
Возвращает количество вхождений шаблона в строку.
Пример:
SELECT REGEXP_COUNT(‘123123123123123’, ‘(12)3’, 1, ‘i’) REGEXP_COUNT
FROM DUAL;
REGEXP_COUNT
————
5
- REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_opt [, match_param [, subexpr] ] ] ] ])
source_char — текст, в котором выполняется поиск
pattern — регулярное выражение
position — позиция в строке, с которой необходимо начать поиск (по умолчанию 1)
occurrence — искомое вхождение (по умолчанию 1)
match_param — модификаторы, изменяющие стандартный механизм сопоставления
subexpr — для шаблонов с подвыражениями, это число от 0 до 9, которое указывает, которое из подвыражений, является целью данной функции
Возвращает позицию символа, находящегося в начале или конце соответствия для шаблона.
Пример:
SELECT REGEXP_INSTR(‘1234567890’, ‘(123)(4(56)(78))’, 1, 1, 0, ‘i’, 2)
«REGEXP_INSTR» FROM DUAL;
REGEXP_INSTR
——————-
4
- REGEXP_REPLACE(source_char, pattern [, replace_string [, position [, occurrenсe [, match_param ] ] ] ])
source_char — текст, в котором выполняется поиск
pattern — регулярное выражение
replace_string — шаблон для замены каждого вхождения (может содержать обратные ссылки)
position — позиция в строке, с которой необходимо начать поиск (по умолчанию 1)
occurrence — искомое вхождение (по умолчанию 1)
match_param — модификаторы, изменяющие стандартный механизм сопоставления
Функция по сути аналогичная
REPLACE с тем отличием, что способна использовать регулярные выражения и результаты поиска при помощи обратных ссылок подставлять в шаблон для замены.
Пример:
SELECT
REGEXP_REPLACE(phone_number,
‘([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})’,
‘(\1) \2-\3’) «REGEXP_REPLACE»
FROM employees
ORDER BY «REGEXP_REPLACE»;
REGEXP_REPLACE
———————————————————————————
(515) 123-4444
(515) 123-4567
(515) 123-4568
(515) 123-4569
(515) 123-5555
. . .
- REGEXP_SUBSTR(source_char, pattern [, position [, occurrence [, match_param [, subexpr ] ] ] ] )
source_char — текст, в котором выполняется поиск
pattern — регулярное выражение
position — позиция в строке, с которой необходимо начать поиск (по умолчанию 1)
occurrence — искомое вхождение (по умолчанию 1)
match_param — модификаторы, изменяющие стандартный механизм сопоставления
subexpr — для шаблонов с подвыражениями, это число от 0 до 9, которое указывает, которое из подвыражений, является целью данной функции
Функция ищет подстроку в строке, которая совпадает с шаблоном.
Пример:
SELECT REGEXP_SUBSTR(‘1234567890’, ‘(123)(4(56)(78))’, 1, 1, ‘i’, 4)
«REGEXP_SUBSTR» FROM DUAL;
REGEXP_SUBSTR
——————-
78
match_param может принимать следующие значения, включая их комбинацию:
- ‘c’ — сопоставление, чувствительное к регистру символов (по умолчанию)
- ‘i’ — сопоставление, нечувствительное к регистру символов
- ‘n’ — разрешить операцию сопоставления с любым символом
- ‘m’ — исходный текст разбит на множество строк
- ‘x’ — игнорировать пробельные символы (по умолчанию пробельные символы совпадают сами с собой)
Таблица 1: Метасимволы привязки
Метасимвол | Описание | Пример |
^ | Привязать выражение к началу строки | «^привет» соответствует «привет, как дела», но не «как дела, привет» |
$ | Привязать выражение к концу строки | «привет$» соответсвует «как дела, привет», но не «привет, как дела» |
Таблица 2: Квантификаторы и операторы повтора
Квантификатор | Описание | Пример |
* | Встречается 0 и более раз | REGEXP_REPLACE(str, ’11*’, ’1′) Результат: test11 => test1 11123345 => 123345 |
? | Встречается 0 или 1 раз | |
+ | Встречается 1 и более раз | REGEXP_LIKE(str,’5+’) Результат: test11 => false 11123345 => true |
{m} | Встречается ровно m раз | REGEXP_LIKE(str,’3{2}’) Результат: test11 => false 11123345 => true |
{m,} | Встречается по крайней мере m раз | |
{m, n} | Встречается по крайней мере m раз, но не более n раз |
Таблица 3: Предопределенные символьные классы POSIX
Класс символов | Описание |
[:alpha:] | Буквы |
[:lower:] | Буквы в нижнем регистре |
[:upper:] | Буквы в верхнем регистре |
[:digit:] | Цифры |
[:alnum:] | Буквы и цифры |
[:space:] | Пробелы (не печатаемые символы), такие как перевод каретки, новая строка, вертикальная табуляция и подача страницы |
[:punct:] | Знаки препинания |
[:cntrl:] | Управляющие символы (не печатаемые) |
[:print:] | Печатаемые символы |
Таблица 4: Альтернативное сопоставление и группировка выражений
Метасимвол | Описание | |
| | Альтернатива | Разделяет альтернативные варианты, часто используется с оператором группировки () |
( ) | Группа | Группирует подвыражения для альтернативы, квантификатора или ссылочности |
[char] | Список символов | Обозначает список символов; большинство метасимволов в списке символов представляют собой литеры, за исключением символьных классов и метасимволов ^ и — |
[^char] | Список символов | Список символов, которые не должны присутствовать в строке |
Таблица 5: Метасимвол ссылки
Метасимвол | Описание | |
\digit | Обратная косая черта | За ней следует цифра от 1 до 9, обратная косая черта связана с предыдущим сопоставлением с соответствующим номером заключенного в скобки подвыражения. (Заметьте: Обратная косая черта может иметь другое значение в регулярном выражении; в зависимости от контекста она может означать также символ Escape |
Полный список символов, которые можно использовать в регулярных выражениях Oracle можно посмотреть по ссылке: Operators in Oracle SQL Regular Expressions
При написании этого текста использовались материалы со страниц: http://download.oracle.com и http://apps-oracle.ru/regular_expression-2/
ascii(s) | Возвращает ASCII-код символа, переданного в виде строковой переменной s |
btrim(s [, t]) | Возвращает строку s, в начале и в конце которой удалены все символы, входящие в строку t (если аргумент t не задан, усекаются начальные и конечные пропуски – пробелы, символы табуляции и т. д.) |
char length(s) | Возвращает длину строки s в символах |
chr(n) | Возвращает символ с ASCII-кодом n |
s ilike(f) | Возвращает true, если выражение f совпадает (без учета регистра символов) с s |
imtcap(s) | Возвращает строку s, в которой первая буква каждого слова преобразуется к верхнему регистру |
length(s) | Возвращает длину строки s в символах |
s like(f) | Возвращает true, если выражение f совпадает с s |
lower (s) | Возвращает строку s, преобразованную к нижнему регистру |
lpad(s .n [ .c]) | Возвращает строку s, дополненную слева содержимым строки с (или пробелами, если аргумент с не задан) до длины n (или усеченную справа до n символов) |
ltrim(s [ . f]) | Возвращает строку s, в начале которой удалены все символы, входящие в строку f (если аргумент f не задан, усекаются начальные пропуски – пробелы, символы табуляции и т. д.) |
octet_length(s) | Возвращает длину строки s в байтах |
position(b IN s) | Возвращает позицию подстроки b в строке s (отсчет начинается с 1) |
repeat (s, n) | Возвращает строку s, повторенную n раз |
rpad(s .n. [ .c]) | Возвращает строку s, дополненную справа содержимым строки с (или пробелами, если аргумент с не задан) до длины n (или усеченную слева до n символов) |
rtrim(s [ .f]) | Возвращает строку s, в конце которой удалены все символы, входящие в строку f (если аргумент f не задан, усекаются конечные пропуски – пробелы, символы табуляции и т. д.) |
strpos(s .b) | Возвращает позицию подстроки b в строке s (отсчет начинается с 1). Относится к числу функций PostgreSQL и дублирует функцию SQL position(), но с передачей аргументов в стиле С |
substr(s .b [. 1]) | Выделяет из строки s подстроку, начинающуюся с позиции n (отсчет начинается с 1). Необязательный аргумент 1 определяет максимальную длину подстроки в символах |
substring (FROM n FOR 1) | Выделяет из строки s подстроку, начинающуюся с позиции n (отсчет начинается с 1). Необязательный аргумент 1 определяет максимальную длину подстроки в символах |
to_ascii (s .f) | Возвращает строку s, преобразованную из расширенной кодировки f в ASCII |
translate(s .f .r) | Возвращает строку s, в которой все символы, входящие в строку f, заменяются соответствующими символами строки г |
trim (направление f FROM s) | Возвращает строку s, в начале и/или в конце которой удалены все символы, входящие в строку f. В аргументе направление передается ключевое слово SQL, определяющее направление усечения (LEADING, TRAILING или BOTH) |
upper(s) | Возвращает строку s, преобразованную к верхнему регистру |
SUBSTR, SUBSTRB, SUBSTRC, SUBSTR2 и SUBSTR4
Имя
SUBSTR, SUBSTRB, SUBSTRC, SUBSTR2 и SUBSTR4
Сводка
Семейство функций SUBSTR является одним
из наиболее распространенного и полезного набора символьных функций. SUBSTR
функции позволяют извлекать подмножество смежных символов из
строка. Подстрока определяется начальной позицией и длиной,
и функции различаются используемыми единицами измерения:
- SUBSTR
Начальная позиция и длина указаны в символах.
- SUBSTRB
Начальная позиция и длина указаны в байтах. Когда вы используете
однобайтовый набор символов, SUBSTRB и SUBSTR вернут одинаковые
полученные результаты.- SUBSTRC
Начальная позиция и длина указаны в символах Unicode,
после того, как были составлены все разложенные символы.- SUBSTR2
Начальная позиция и длина указаны в единицах кода.
- SUBSTR4
Начальная позиция и длина указаны в единицах кода.
Все характеристики функций соответствуют одному шаблону:
FUNCTION SUBSTR (string_in
IN VARCHAR2,start_position_in
В НОМЕРЕ [,substr_length_in
В НОМЕРЕ]) ВОЗВРАТ VARCHAR2
, где аргументы следующие:
- строка_вход
Исходная строка
- start_position_in
Начальная позиция подстроки в
строка_вход
- substr_length_in
Длина желаемой подстроки (количество символов,
возвращается в подстроке)
Последний параметр substr_length_in
по желанию. Если вы не укажете длину подстроки, тогда SUBSTR
возвращает все символы до конца
string_in
(от начальной позиции
указано). Аргумент substr_length_in
, если присутствует, должен быть больше нуля. …
Oracle PL / SQL Функции INSTR и SUBSTR
1. Обзор
INSTR и SUBSTR — это строковые функции, которые выполняют базовые служебные функции над входной строкой для возврата числа и строкового вывода соответственно. В статье объясняется использование функций INSTR и SUBSTR.
2. Функция INSTR
Функция INSTR возвращает позиционное вхождение символа или группы символов (подстроки) во входной строке. По умолчанию он возвращает первое вхождение символа (ов).
Синтаксис
Код (текст):
INSTR (строка, символ [или подстрока], позиция, вхождение)
НОМЕР ВОЗВРАТА
• строка: строка, в которой выполняется поиск
• символ или подстрока: подстрока, которую нужно искать в строке
• позиция: необязательный параметр, обозначающий начальную позицию поиска. По умолчанию установлено значение 1. Он принимает как положительные, так и отрицательные значения; где знак указывает направление поиска в строке, то есть вперед или назад. Если он положительный, поиск начинается с начала строки. В случае отрицательного результата поиск начинается с конца строки.
• Вхождение Это необязательный параметр, который обозначает количество вхождений символа в строке. По умолчанию установлено значение 1.
• И строка, и подстрока могут быть любыми из типов данных CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.Возвращаемое значение имеет тип данных NUMBER
.
• Если подстрока в строке не найдена, функция INSTR возвращает 0.
3. Примеры
Пример 3.1. Ниже SQL показано расположение L в строке ‘CUBORACLE’
Код (SQL):
ВЫБЕРИТЕ INSTR (‘CLUBORACLE’, ‘L’) RES ИЗ ДВОЙНОГО;
РЭС
—
2
Пример 3.2. Ниже SQL показывает расположение L в строке ‘CUBORACLE’ после 3-й позиции
Код (SQL):
ВЫБЕРИТЕ INSTR (‘CLUBORACLE’, ‘L’, 3) RES FROM DUAL;
РЭС
—
9
Пример 3. 3. Ниже SQL показывает расположение L в строке ‘CUBORACLE’ после 3-й позиции от конца строки .
Код (SQL):
ВЫБЕРИТЕ INSTR (‘CUBORACLE’, ‘L’, -3) RES FROM DUAL;
РЭС
—
2
4. Другие формы INSTR
5. Функция SUBSTR
Функция SUBSTR используется для извлечения подстроки из большой строки.
Синтаксис:
Код (текст):
SUBSTR (строка, начальное положение, конечное положение)
СТРОКА ВОЗВРАТА
При вводе строки, из которой нужно взять подстроку,
Start pos и End pos — это необязательные параметры, которые определяют количество символов в подстроке, возвращаемой функцией.
6. Примеры
Код (SQL):
ВЫБРАТЬ substr (‘CLUBORACLE’, 3,2) RES FROM dual;
RES
—-
UB
SELECT substr (‘CLUBORACLE’, 7) RES FROM dual;
РЭС
—-
ACLE
Oracle Substr Kullanımı | PL SQL Substr Fonksiyonu |
Oracle Substr Kullanımı | PLSQL Substr Fonksiyonu
Oracle SUBSTR kullanımı ile String ifadelerin içerisinden String ifadeleri ayırabiliyoruz. Орнегин: «Merhaba PLSQL» stringimin içerisinden «SQL» substringini almak için, Oracle Substr Kullanımına bir göz atmamız gerekir.
Oracle Substr fonksiyonu kullanımı Синтаксис:
SUBSTR (string_ifade, başlangıç_pozisyonu [, uzunluk])
Görüldüğü gibi Oracle SUBSTR bizden 3 adeyt değer.
İlk Paratre String ifadedir, yani içerisinde bulunan bir değeri almak istediğimiz bir dizi karakterdir. Örnein «Merhaba123Dünya».
Bu karakterlerin içerisinden, baslangıc_pozisyonu ve uzunluk olarak verdiimiz değere göre SUBSTR () bize sonuç gönderecektir.
«başlangıc_pozisyonu» ile edinmek istediğimiz string ifadenin nereden başlayacağını belirtiyoruz. Seçimlik olan «uzunluk» değişkeni ile de kaç karakter almak istediğimizi belirtiyoruz.
Орнегин:
SUBSTR ('Merhaba123Dünya', 2,5) - Sonuç: erhab
Biz burada SUBSTR () fonksiyonu ve INSTR fonksiyonu kullanımını inceleyeceğiz.
Bu sayede bir bütün olarak string ifadelerden stringleri veya içeriğindeki sayıları ayırma konularında yeteneğimizi geliştireceğiz.
Ön hazırlık niyeti ile ‘123’ sayısını ‘Merhaba123’ stringinden almaya çalışalım.
Пример:
выберите substr ('Merhaba123', instr ('Merhaba123', 'Merhaba', 1) + length ('Merhaba')) из двойного
Yukarıdaki kodu SQL Developer veya PLSQL Developer incerynınızınızınınıza PLSQL Developer Programmelarınınıza veya PLSQL Developer program: . Burada ‘Merhaba123’ karakterlerinin içerisinden ‘123’ ü ayırdık. Sonucu ‘123’ olarak gelir. Sebebi ise;
instr (‘Merhaba123’, ’Merhaba’, 1) = 1
instr (‘Merhaba123’, ’Merhaba’, 1) + длина (‘Merhaba’) = 1 + 7 = 8 ifadesi ile substr içerisinde 2.değer olan pozisyonu belirttik. uzunluk olarak 3. değerimizi vermedik yani kaç karakter var ise hepsini al demek istedik. Bunun yerine uzunluk değerini 3 de yazsaydık ‘123’ değerini alabilirdik. Ancak tabiki fonksiyonel olmazdı.
ok farklı durumlarda çok farklı senaryolar ile karşılaşabiliriz. Yazımın devamındaki birkaç örnek, bize substr fonksiyonunun anlam ve önemini anlatacak. Ama biz şimdi sql substr fonksiyonunu ayrıntılarına kadar inceleyelim.
Oracle Substr Özellikleri
Eğer uzunluk girmeden «örn: substr (« helloworld », 2)» çalıştırırsanız çıktı string ifadenin başlangıç_pozisyonamundan it olibación.Яни «elloworld».
Stringin başlangıç pozisyonu 1’dir 0 yazsanız bile 1 olacaktır.
Yani 1. harften itibaren string i kesmeye başlayacaktır. Ancak negatif bir değer verirseniz stringin sonundan saymaya başlayacaktır.
Oracle Substr Örnekleri
SUBSTR ('merhaba güzel dünya, naber?', 6, 2) Sonuç: 'ba' SUBSTR ('merhaba güzel dünya, naber?', 6) Sonuç: 'ba güzel dünya, naber?' SUBSTR ('merhaba güzel dünya, naber?', 1, 4) Sonuç: 'merh' SUBSTR ('merhaba güzel dünya, naber?', -3, 3) Sonuç: 'бер' SUBSTR ('merhaba güzel dünya, naber?', -6, 3) Sonuç: 'наб' SUBSTR ('merhaba güzel dünya, naber?', -8, 2) Sonuç: 'a,' SUBSTR ('DENEMEYEDEGER'), 4; -1) SUBSTR ('DENEMEYEDEGER', 4, -2382) --eğer uzunluk negatif ise sonuç her zaman NULL döner. Sonuç: NULL
Oracle INSTR Kullanımı
Bir stringin içindeki string ifadenin pozisyonunu bize numerik olarak verir. Numerik değer döner. Яни бир строка ifadedeki aradığımız бир harfin veya kelimenin lokasyonunu bize numerik olarak döndürür.
Синтаксис ı;
INSTR (string_ifade, aranan_string_ifade [, baslangic_pozisyonu [, kaçıncı_karsilasma]])
Örnekler:
INSTR ('s e lam kardeşim', 'eşlaş ) INSTR ('s e lam kardeşim', 'e', 1, 1) Sonuç: 2 ('e' ile ilk karşılaşma) INSTR ('selam kard e şim', 'e', 1, 2) Sonuç: 11 ('e' ile ikinci karşılaşma) INSTR ('selam kardeşim e ', 'e', 1, 3) Sonuç: 15 ('e' ile üçüncü karşılaşma) INSTR ('T e knoloji g e lişiyor nAt', 'e', -3, 2) Sonuç: 2 - başlangıç pozisyonu eğer negatifse tersen okumaya başlar ve tersten 3. harften sonra 2. defa karşılaştığı indexi sonuç olarak döner.
Oracle Substr ve Oracle Instr Fonksiyonları Birlikte Kullanımı
Substr sonuç olarak bize string bir ifade dönüyordu. Бу строка ifadeyi döndürmek için rakamlar ile başlangıç pozisyonu, uzunluk gibi değerleri vermemiz gerekiyordu.
Bu sebeple Substr fonksiyonu içerisinde Oracle instr fonksiyonunun bize döndürdüğü pozisyonları kullanabiliriz. Bu sayede zor string ifadelerin içindeki değerleri belli kriterlere göre ayırabilme imkanına sahip oluyoruz.Aşağıdaki орнек içerisinde 'FATURA_NO12321SIRANO166312'
Gibi бир ifadenin içerisinden «fatura_no» değeri Olan 12321, «Сирано» değeri Olan «166312» değerini ayırmamız gerekiyor ISE Bunu, SUBSTR ве INSTR fonksiyonlarını Ic Ледовом kullanarak rahatlıkla ayırabileceğimizi görelim;
Örnek:
выберите SUBSTR ('FATURA_NO12321SIRANO166312', INSTR ('FATURA_NO12321SIRANO166312', 'FATURA_NO', 1, 1) + length ('FATURA_NO'), INSTRAN ('FATURA_NO'), INSTRAN ('FATURA_NO'), INSTRAN ('FATURA_NO'), INSTRAN ('FATURA_NO'), INSTRAN ('FATURA_NO'), INSTRAN ('FATURA_NO ») 10) fatura_no, SUBSTR ('FATURA_NO12321SIRANO166312', INSTR ('FATURA_NO12321SIRANO166312', 'SIRANO', 1, 1) + length ('SIRANO'), 999) sira_no, 'FATURA_NO12321SIRANO166312' STRING_IFADE ОТ ДВОЙНОЙ
Sonuçu kendi PLSQL programınızda çalıştırdığınızda çıktı aşağıdaki gibi gözükecektir.
FATURA_NO SIRA_NO STRING_IFADE
12321 166312 FATURA_NO12321SIRANO166312
Yazımızın sonuna geldik. Документы Oracle
другие документы Oracle
Oracle Substr Kullanımın
Oracle Substr Kullanımımı000 SQL 9000 SUBSTR
000 SQL 9000 SUBSTR для SQL
SQL (или SUBSTR ()) используется для сегментирования цепочки символов.Autrement dit, cela permet d’extraire une partie d’un chaîne, par instance pour tronquer un texte.
Совместимость:
- MySQL: SUBSTR () или SUBSTRING ()
- PostgreSQL: SUBSTR () или SUBSTRING ()
- Oracle: SQL365 SUBSTR () 9019 SUBSTRING (9019 SUBSTRING) Сервер: SUBSTRING ()
- SQLite: SUBSTR ()
- Firebird: SUBSTRING ()
Синтаксис
La fonction SUBSTRING () используется для 4000 разных голосов:
A savoir: il ne faut pas oublier que la fonction est aussi parfois appelée SUBSTR ().
Compatibilité
Самая важная информация о синтаксисах, которые не используются, включают определенные Système de Gestion de Base de Données (SGBD). Сохраняйте синтаксисы SGBD и используйте их, удобные для просмотра 2 таблицы, содержащие:
Fonction SUBSTR ():
SGBD | SUBSTRUB (начало | ) SUBSTR (строка | ) строка, начало, длина) | SUBSTR (строка FROM start) | SUBSTR (строка FROM start FOR length) | ||||
---|---|---|---|---|---|---|---|---|---|
MySQL | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ | ||
Oracle | ✔ | ✔ | ✔ | ✔ | |||||
SQL Server | 4 | SQL Server | 4 | ✔ | ✔ | ✘ | ✘ | ||
Firebird | ✘ | ✘ | ✘ | ✘ |
9019 5 Fonction SUBSTRING ():
SGBD | SUBSTRING (строка, начало) | SUBSTRING (строка, начало, длина) | SUBSTRING (строка FROM start) | SUBSTRING (строка FROM start) | |||
---|---|---|---|---|---|---|---|
MySQL | ✔ | ✔ | ✔ | ✔ | |||
PostgreSQL | ✘ | ✘ | ✔ | ✔ | ✔ | ✔ | ✔ |
SQL Server | ✘ | ✔ | ✘ | ✘ | |||
SQLite | ✘ | ✘ | ✘ | ✔ |
Exemple de Requête
Cette fonction peut s’utiliser dans une Requête SQL en utilisant синтаксис, равный ci: 9000 5
ВЫБРАТЬ ПОДСТРОЙ (nom_colonne, 3, 10) FROM tableu
В данном примере содержится содержание колонки «nom_colonne», в которой содержится 4 символа на 10 символов.
Exemple
Imaginons une base de données qui contient une liste de pays en français et en anglais.
Стол платит:
id | nom_fr_fr | nom_en_gb | |
---|---|---|---|
1 | ФРАНЦИЯ 9038 | 904 904 904 904 903 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 ALLEMAGNE | ГЕРМАНИЯ |
4 | КИТАЙ | КИТАЙ |
SQL не требуется, чтобы получить дополнительную информацию, чтобы получить дополнительную информацию:
SELECT id, nom_fr_fr, SUBSTR (nom _fr_fr, 1, 2), SUBSTR (nom_fr_fr, 3) FROM платит
Требуется возврат материалов:
id | nom_fr_fr | SUBSTR (nom_fr_fr, 1, 2) | SUBSTR (nom_fr_fr, 1, 2) | SUBSTR (nom_fr_fr, 1, 2) | SUBSTR (nom_fr_fr, 1, 2) | SUBSTR (nom_fr_fr, 1, 2) | FRANCE 4 | 4 4 4 | 4 | FR | ANCE |
---|---|---|---|---|---|---|---|---|---|---|
2 | ESPAGNE | ES | PAGNE | |||||||
3 | ALLEMAGNE | AL | LEMAGNE 904 904 9038 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 |
Ce tableau de résultat démontre bien qu’il est possible de segmenter un texte simplement.
Пример использования
PL-SQL (ORACLE) Fonksiyonları — SUBSTR
PL-SQL (ORACLE) Fonksiyonları — SUBSTR | Струна içinden herhangi bir bölümü ayırmak
PL-SQL ile veritabanında tablodan çektiğiniz kayıtları düzenleyi son kullanıcıya göstermeniz gerekebileceği gibi kimi zamanda bicimlendirdiğimiz bu kayıtları sorgu içinde kullanmamız. Bu ihtiyaçlar çou zaman eksik tasarlanmış tablolardan kaynaklansada, maliyetten kaçmak adına kendi çözümlerimizi ve müşterilere olabildiğince çabuk ve ihtiyaçlarınımekarşyre daraké.Bu konular proje yönetimi altında müşteri ihtiyaçları karşılama ve yönetme adı altında daha geniş ve detaylı olarak ileride tekrar ele alınacaktır.
Eğer tablonuzda tarih bilgisi içermeyen bir alan üzerinden sıralama yapmanız gerekirse, resmi çözüm o tabloya bir tarih (yada yıl) alanı ekleyip, geçmiş kayıtlarıde bu öşır Fakat komplex ve uzun yıllardan beri kodlanan bir proje üzerinde çalışıyorsanız, çoğu zaman değiştireceğiniz çok ufak bir değişiklik bile hiç beklemediğiniz bir çokasıerin «патентованный». Bunun için бу kaydın başına yada sonuna ekleteceğiniz yıl bilgisini PL-SQL ile kolayca alabilir ve sorgunuzda kullanabilirsiniz.
Belkide en çok bu tarz işlemler için kullanılan bir PL-SQL fonksiyonundan, SUBSTR den bahsedeceğim bugün.
ПОДПИСЬ
SUBSTR (varchar, number, number)
SUBSTR ("ifade", başlangıç indisi, alınacak karakter sayısı)
SUBSTR ("ifade", - sondan alınacak karakter sayısı)
SUBSTRşı - 'Başlangıç indisinden sonra belirttiğimiz değer kadar karakter verir
- SELECT SUBSTR (' Mehmet ÖZAKAN ', 0,2) FROM DUAL; ==> Me
- ВЫБРАТЬ SUBSTR ('Mehmet ÖZAKAN', 1,2) ОТ ДВОЙНОЙ; ==> Me
- ВЫБРАТЬ SUBSTR ('Mehmet ÖZAKAN', 2,2) ОТ ДВОЙНОЙ; ==> eh
- ВЫБРАТЬ ПОДСТРОЙ ('Мехмет ОЗАКАН', 4,8) ОТ ДВОЙНОЙ; ==> встретил ÖZAK
- 'Birinci Boşluk karakterinden önceki bölümü verir
--SELECT SUBSTR (' Mehmet ÖZAKAN ', 0, INSTR (' Mehmet ÖZAKAN ',' ') -1) FROM DUAL; ==> Mehmet
- 'Birinci Boşluk karakterinden sonraki bölümü verir
- ВЫБРАТЬ SUBSTR (' Mehmet ÖZAKAN ', - (ДЛИНА (' Mehmet ÖZAKAN! ') - INSTR (' Mehmet ÖZAKAN) -1! ',' ') ) ОТ ДВОЙНОЙ; ==> ÖZAKAN
--SELECT SUBSTR ('Mehmet ÖZAKAN!', INSTR ('Mehmet ÖZAKAN!', '') + 1, LENGTH ('Mehmet ÖZAKAN!') - INSTR ('Mehmet ÖZAKAN!', '') +1) ОТ ДВОЙНОЙ; ==> ОЗАКАН!
- 'Sondan belirttiğimiz karakter kadar verir (Örnekte son 4 karakter istenmiş)
- ВЫБЕРИТЕ SUBSTR (' Мехмет ОЗАКАН ', ДЛИНА (' Мехмет ОЗАКАН! ') - 4,4) ОТ ДВОЙНОЙ; ==> AKAN
- ВЫБРАТЬ ПОДСТРОЙ ('Мехмет ОЗАКАН', - 4) ИЗ ДВОЙНОГО; ==> АКАН
SUBSTR sayesinde herhangi bir alanın baştan, sondan veya ortadan istediğimiz karakterleri almamız mümkün.
Bu konu ile ilgili aşağıdaki yazıları okumanızı tavsiye ederim.
Bu kategori altındaki diğer yazılarımı okuman isterseniz aşağıdaki yazılara göz atabilirsiniz.
Строковые функции SUBSTR и INSTR
SUBSTR (подстрока) Встроенная строковая функция
SUBSTR (перегрузка 1)
SUBSTR (
STR1 VARCHAR2 CHARACTER SET ANY_CS,
POS PLS_INTEGER, — начальная позиция
LEN PLS_INTEGER: = 214748364
ARETURET2 символов НАБОР ПЕРСОНАЖЕЙ STR1% CHARSET;
SUBSTR (перегрузка 2)
SUBSTR (
STR1 CLOB CHARACTER SET ANY_CS,
POS NUMBER, — начальная позиция
LEN NUMBER: = 2147483647) — количество символов
RETURN CLOB CHARACTER SET STR1% CHARSET;
Подстрока Начало строки
SELECT SUBSTR (, 1,)
FROM dual;
SELECT SUBSTR (‘Возьмите первые четыре символа’, 1, 4) FIRST_FOUR
FROM dual;
Подстрока Середина строки
ВЫБРАТЬ ПОДСТРОКУ (,,)
FROM dual.
SELECT SUBSTR (‘Возьмите первые четыре символа’, 16, 4) MIDDLE_FOUR
FROM dual;
Подстрока Конец строки
ВЫБРАТЬ ПОДСТРОК (,)
FROM dual;
SELECT SUBSTR (‘Возьмите первые четыре символа’, 16) SIXTEEN_TO_END
FROM dual;
SELECT SUBSTR (‘Возьмите первые четыре символа’, -4) FINAL_FOUR
FROM dual;
INSTR (Instring) Встроенная строковая функция
INSTR (перегрузка 1)
INSTR (
STR1 VARCHAR2 CHARACTER SET ANY_CS, — тестовая строка
STR2 VARCHAR2 CHARACTER SET STR1% CHARSET, — строка для поиска
POS PLS_INTEGER: = 1, — позиция
NTH POSITIVE: = 1) — номер вхождения
RETURN PLS_INTEGER;
INSTR (перегрузка 2)
INSTR (
STR1 CLOB CHARACTER SET ANY_CS, — тестовая строка
STR2 CLOB CHARACTER SET STR1% CHARSET, — строка для поиска
POS INTEGER: = 1, — позиция
NTH POSITIVE: = 1) — номер вхождения
RETURN INTEGER;
Строка для сопоставления первого найденного значения
SELECT INSTR («,
FROM dual;
SELECT INSTR (‘Взять первые четыре символа’, ‘a’, 1, 1) FOUND_1
FROM dual;
Instring If Not Matching Найдено второе значение
SELECT INSTR (‘Возьмите первые четыре символа’, ‘a’, 1, 2) FOUND_2
FROM dual;
Instring For Multiple Characters
SELECT INSTR (‘Take the first four characters’, ‘four’, 1, 1) MCHARS
FROM dual;
Поиск в обратном направлении
SELECT INSTR (‘Взять первые четыре символа’, ‘a’, -1, 1) REV_SRCH
FROM dual;
Поиск в обратном направлении, второе совпадение
SELECT INSTR (‘Возьмите первые четыре символа’, ‘a’, -1, 2) REV_TWO
FROM dual;
Анализ строки путем объединения встроенных строковых функций SUBSTR и INSTR
Анализ списка первого значения
Принять до символ перед первой запятой
SELECT SUBSTR (‘abc, def, ghi’, 1, INSTR (‘abc, def, ghi ‘,’, ‘, 1, 1) -1)
ОТ двойного;
Центральное значение синтаксического анализа списка
Возьмите значение между запятыми
SELECT SUBSTR (‘abc, def, ghi’, INSTR (‘abc, def, ghi’, ‘,’, 1, 1) +1,
INSTR ( ‘abc, def, ghi’, ‘,’, 1,2) -INSTR (‘abc, def, ghi’, ‘,’, 1,1) -1)
FROM dual;
Последнее значение синтаксического анализа списка
Возьмите значение после последней запятой
SELECT SUBSTR (‘abc, def, ghi’, INSTR (‘abc, def, ghi’, ‘,’, 1, 2) +1)
FROM двойной;
.