Можно ли использовать регулярные выражения в sql
Содержание статьи
Поиск текста с помощью регулярных выражений — SQL Server Management Studio (SSMS)
- 03/14/2017
- Чтение занимает 7 мин
В этой статье
Применимо к:Applies to: SQL ServerSQL Server (все поддерживаемые версии) SQL ServerSQL Server (all supported versions) База данных SQL AzureAzure SQL DatabaseБаза данных SQL AzureAzure SQL Database Управляемый экземпляр SQL AzureAzure SQL Managed InstanceУправляемый экземпляр SQL AzureAzure SQL Managed Instance Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse Analytics Параллельное хранилище данныхParallel Data WarehouseПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: SQL ServerSQL Server (все поддерживаемые версии) SQL ServerSQL Server (all supported versions) База данных SQL AzureAzure SQL DatabaseБаза данных SQL AzureAzure SQL Database Управляемый экземпляр SQL AzureAzure SQL Managed InstanceУправляемый экземпляр SQL AzureAzure SQL Managed Instance Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse Analytics Параллельное хранилище данныхParallel Data WarehouseПараллельное хранилище данныхParallel Data Warehouse
Регулярные выражения представляют компактный и гибкий формат записи условий для поиска и замены в тексте по шаблону.Regular expressions are a concise and flexible notation for finding and replacing patterns of text. Определенный набор регулярных выражений может быть использован в поле Найти в диалоговом окне Найти и заменить в SQL Server Management StudioSQL Server Management Studio.A specific set of regular expressions can be used in the Find what field of the SQL Server Management StudioSQL Server Management Studio Find and Replace dialog box.
Поиск с помощью регулярных выраженийFind using regular expressions
Чтобы включить использование регулярных выражений в поле Найти во время операций Быстрый поиск, Найти в файлах, Быстрая замена или Заменить в файлах, выберите параметр Использовать в разделе Параметры поиска и выберите Регулярные выражения.To enable the use of regular expressions in the Find what field during QuickFind, FindinFiles, Quick Replace, or Replace in Files operations, select the Use option under Find Options and choose Regular expressions.
В этом случае становится доступной треугольная кнопка Список ссылок , расположенная рядом с полем Найти .The triangular Reference List button next to the Find what field then becomes available. Нажмите кнопку для просмотра списка наиболее часто используемых регулярных выражений.Click this button to display a list of the most commonly used regular expressions. При выборе любого элемента в построителе выражений он автоматически вставляется в поле Найти .When you choose any item from the Expression Builder, it is inserted into the Find what string.
Примечание
Выражения, используемые в поле Найти , имеют некоторые синтаксические отличия от регулярных выражений, используемых в программировании на платформе MicrosoftMicrosoft .NET Framework.There are syntax differences between the regular expressions that can be used in Find what strings and those that are valid in MicrosoftMicrosoft .NET Framework programming. Например, в режиме Найти и заменить фигурные скобки {} используются в выражениях с тегами.For example, in Find and Replace, the braces notation {} is used for tagged expressions. Например, выражение «zo{1}» отвечает всем вхождениям «zo», за которыми следует тег 1, как, например, «Alonzo1» или «Gonzo1».So the expression «zo{1}» matches all occurrences of «zo» followed by the tag 1, as in «Alonzo1» and «Gonzo1». В рамках платформы .NET Framework фигурные скобки {} используются в качестве квантификаторов.But within the .NET Framework, the notation {} is used for quantifiers. Таким образом, выражение «zo{1}» отвечает всем вхождениям символа «z», за которым следует только 1 символ «o», как в слове «zone», но не как в «zoo».So the expression «zo{1}» matches all occurrences of «z» followed by exactly one «o», as in «zone» but not «zoo».
В следующей таблице описываются регулярные выражения, доступные в поле Справочный список.The following table describes the regular expressions available in the Reference List.
ВыражениеExpression | СинтаксисSyntax | ОписаниеDescription |
---|---|---|
Любой символAny character | .. | Совпадает с любым одиночным символом, кроме символа новой строки.Matches any single character except a line break. |
Ноль или болееZero or more | * | Совпадает с нулем или большим числом вхождений предыдущего выражения, создавая все возможные совпадения.Matches zero or more occurrences of the preceding expression, making all possible matches. |
Один или болееOne or more | + | Совпадает с одним и больше вхождений предыдущего выражения.Matches at least one occurrence of the preceding expression. |
Начало строкиBeginning of line | ^ | Совпадает с вхождением, только если оно находится в начале строки текста, в котором производится поиск.Anchors the match string to the beginning of a line. |
Конец строкиEnd of line | $ | Совпадает с вхождением, только если оно находится в конце строки текста, в котором производится поиск.Anchors the match string to the end of a line. |
Начало словаBeginning of word | < | Совпадает с вхождением, только если оно является началом слова в тексте.Matches only when a word begins at this point in the text. |
Конец словаEnd of word | > | Совпадает с вхождением, только если оно является концом слова в тексте.Matches only when a word ends at this point in the text. |
Символ новой строкиLine break | nn | Совпадает с символом новой строки, не зависящим от платформы.Matches a platform-independent line break. Вставляет символ новой строки в выражение замены.In a Replace expression, inserts a line break. |
Любой символ из набораAny one character in the set | [][] | Совпадает с любым из символов внутри квадратных скобок ([ ]).Matches any one of the characters within the []. Чтобы указать диапазон символов, начальный и конечный символ следует вводить через тире (—), например: [a—z].To specify a range of characters, list the starting and ending character separated by a dash (-), as in [a-z]. |
Любой символ, не входящий в наборAny one character not in the set | [^…][^…] | Совпадает с любым символом, не перечисленным в наборе символов после символа ^.Matches any character not in the set of characters following the ^. |
либоOr | || | Совпадает с выражением до или после символа OR (|).Matches either the expression before or the one after the OR symbol (|). В основном используется в группах.Mostly used within a group. Например, строка «(хвойный|лиственный) лес» совпадает со строками «хвойный лес» и «лиственный лес».For example, (sponge|mud) bath matches «sponge bath» and «mud bath.» |
ESCEscape | |Совпадает с символом после обратной косой черты () в качестве литерала.|Matches the character that follows the backslash () as a literal. Это позволяет искать символы, имеющие специальное значение в регулярных выражениях, таких как { или ^.This allows you to find the characters used in regular expression notation, such as { and ^. Например, ^ ищет символ ^.For example, ^ Searches for the ^ character. | |
Выражение, заключенное в тегиTagged expression | {} | Совпадает со строкой, заключенной в фигурные скобки.Matches text tagged with the enclosed expression. |
Идентификатор C/C++C/C++ Identifier | :i:i | Совпадает с выражением ([a-zA-Z_$][a-zA-Z0-9_$]*).Matches the expression ([a-zA-Z_$][a-zA-Z0-9_$]*). |
Строка в кавычкахQuoted string | :q:q | Совпадает с выражением ((«[^»]*»)|(‘[^’]*’)).Matches the expression ((«[^»]*»)|(‘[^’]*’)). |
Пробел или символ табуляцииSpace or Tab | :b:b | Совпадает с пробелами или символами табуляции.Matches either space or tab characters. |
Целое числоInteger | :z:z | Совпадает с выражением ([0-9]+).Matches the expression ([0-9]+). |
Справочный список содержит неполный список регулярных выражений, допустимых в операциях Найти и заменить.The list of all regular expressions that are valid in Find and Replace operations is longer than can be displayed in the Reference List. Любые из перечисленных ниже регулярных выражений также могут быть использованы в поле Найти .You can also insert any of the following regular expressions into a Find what string:
ВыражениеExpression | СинтаксисSyntax | ОписаниеDescription |
---|---|---|
Минимум — ноль или большеMinimal — zero or more | @ | Совпадает с нулем или большим числом вхождений предыдущего выражения, совпадая с минимальным числом символов.Matches zero or more occurrences of the preceding expression, matching as few characters as possible. |
Минимум — один или большеMinimal — one or more | # | Совпадает с одним или большим числом вхождений предыдущего выражения, совпадая с минимальным числом символов.Matches one or more occurrences of the preceding expression, matching as few characters as possible. |
Повтор n разRepeat n times | ^n^n | Совпадает с числом n вхождений предыдущего выражения.Matches n occurrences of the preceding expression. Например, [0-9]^4 совпадет с любым четырехзначным числом.For example, [0-9]^4 matches any four digit sequence. |
ГруппированиеGrouping | ()() | Группирует вложенное выражение.Groups a subexpression. |
n-й текст, заключенный в тегиnth tagged text | nn | В выражении Поиск и замена показывает, что текст должен совпадать с n-м текстом, заключенным в теги, где n — это число в диапазоне от 1 до 9.In a Find or Replace expression, indicates the text matched by the nth tagged expression, where n is a number from 1 to 9. В выражении Замена вставляет текст совпадения полностью.In a Replace expression, inserts the entire matched text. |
Выравнивание по правому краюRight-justified field | (w,n)(w,n) | В выражении Замена выравнивает по правому краю n-е выражение, заключенное в теги, в поле шириной, по крайней мере, w символов.In a Replace expression, right-justifies the nth tagged expression in a field at least w characters wide. |
Выравнивание по левому краюLeft-justified field | (-w,n)(-w,n) | В выражении Замена выравнивает по левому краю n-е выражение, заключенное в теги, в поле шириной, по крайней мере, w символов.In a Replace expression, left-justifies the nth tagged expression in a field at least w characters wide. |
Предотвращение совпаденияPrevent match | ~(Х)~(X) | Предотвращает совпадение, когда X появляется в этом месте выражения.Prevents a match when X appears at this point in the expression. Например, «прав~(да)» совпадает со словами «правый» и «правота», но не со словом «правда».For example, real~(ity) matches the «real» in «realty» and «really,» but not the «real» in «reality.» |
Буквенно-цифровой символAlphanumeric character | :a:a | Совпадает с выражением ([a-zA-Z0-9]).Matches the expression ([a-zA-Z0-9]). |
БукваAlphabetic character | :c:c | Совпадает с выражением ([a-zA-Z]).Matches the expression ([a-zA-Z]). |
Десятичная цифраDecimal digit | :d:d | Совпадает с выражением ([0-9]).Matches the expression ([0-9]). |
Шестнадцатеричная цифраHexadecimal digit | :h:h | Совпадает с выражением ([0-9a-fA-F]+).Matches the expression ([0-9a-fA-F]+). |
Рациональное числоRational number | :n:n | Совпадает с выражением (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)).Matches the expression (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)). |
Строка буквAlphabetic string | :w:w | Совпадает с выражением ([a-zA-Z]+).Matches the expression ([a-zA-Z]+). |
ESCEscape | ee | Юникод U+001В.Unicode U+001B. |
Спецсимвол BellBell | gg | Юникод U+0007.Unicode U+0007. |
ОтменаBackspace | hh | Юникод U+0008.Unicode U+0008. |
ВкладкаTab | tt | Совпадает с символом табуляции, код Юникода U + 0009.Matches a tab character, Unicode U+0009. |
символьный формат ЮникодаUnicode character | x#### или u####x#### or u#### | Совпадает с символом, который соответствует значению #### в шестнадцатеричных цифрах в Юникоде.Matches a character given by Unicode value where #### is hexadecimal digits. Символ, не входящий в основное многоязычное поле (суррогатный), можно указать с помощью элементов кода ISO 10646 или двух элементов кода Юникод, дающих значение суррогатной пары.You can specify a character outside the Basic Multilingual Plane (that is, a surrogate) with the ISO 10646 code point or with two Unicode code points giving the values of the surrogate pair. |
В следующей таблице приведен синтаксис для совпадений по стандартным свойствам символов Юникода.The following table lists the syntax for matching by standard Unicode character properties. Двухсимвольные сокращения идентичны перечисленным в базе данных свойств символов Юникода.The two-letter abbreviation is the same as listed in the Unicode character properties database. Они могут быть указаны как часть кодировки.These may be specified as part of a character set. Например, выражение [:Nd:Nl:No] совпадает с любым типом цифр.For example, the expression [:Nd:Nl:No] matches any kind of digit.
ВыражениеExpression | СинтаксисSyntax | ОписаниеDescription |
---|---|---|
Буква в верхнем регистреUppercase letter | :Lu:Lu | Совпадает с любой буквой в верхнем регистре.Matches any one upper case letter. Например, «:Luнига» совпадает со строкой «Книга», но не «книга».For example, :Luhe matches «The» but not «the». |
Буква в нижнем регистреLowercase letter | :Ll:Ll | Совпадает с одной прописной буквой.Matches any one lower case letter. Например, «:Llнига», наоборот, совпадает со строкой «книга», но не «Книга».For example, :Llhe matches «the» but not «The». |
Заглавная букваTitle case letter | :Lt:Lt | Совпадает со строкой из одной заглавной и одной прописной буквы, например «Нж» или «Дз».Matches characters that combine an uppercase letter with a lowercase letter, such as Nj and Dz. |
Буква-модификаторModifier letter | :Lm:Lm | Совпадает со знаками пунктуации, например запятыми, знаками ударений, двойными штрихами, используемыми для обозначения модификации предыдущей буквы.Matches letters or punctuation, such as commas, cross accents, and double prime, used to indicate modifications to the preceding letter. |
Другая букваOther letter | :Lo:Lo | Совпадает с другими буквами, например готическая буква «asha».Matches other letters, such as gothic letter ahsa. |
Десятичная цифраDecimal digit | :Nd:Nd | Совпадает с десятичными цифрами от 0 до 9 и их эквивалентами полной ширины.Matches decimal digits such as 0-9 and their full-width equivalents. |
Цифра, обозначаемая буквойLetter digit | :Nl:Nl | Совпадает с цифрами, обозначаемыми при помощи букв (например римские цифры или идеографический ноль).Matches letter digits such as roman numerals and ideographic number zero. |
Другая цифраOther digit | :No:No | Совпадает с другими цифрами, например старая курсивная единица.Matches other digits such as old italic number one. |
Открывающая пунктуацияOpen punctuation | :Ps:Ps | Совпадает с открывающей пунктуацией, например открывающиеся круглые или фигурные скобки.Matches opening punctuation such as open brackets and braces. |
Закрывающая пунктуацияClose punctuation | :Pe:Pe | Совпадает с закрывающей пунктуацией, например закрывающиеся круглые или фигурные скобки.Matches closing punctuation such as closing brackets and braces. |
Открывающие кавычкиInitial quote punctuation | :Pi:Pi | Совпадает со знаком открывающих двойных кавычек.Matches initial double quotation marks. |
Закрывающие кавычкиFinal quote punctuation | :Pf:Pf | Совпадает с одиночными кавычками или знаком закрывающих двойных кавычек.Matches single quotation marks and ending double quotation marks. |
ТиреDash punctuation | :Pd:Pd | Совпадает со знаком тире.Matches the dash mark. |
Соединительная пунктуацияConnector punctuation | :Pc:Pc | Совпадает с символом подчеркивания или знаком выделения подчеркиванием.Matches the underscore or underline mark. |
Другая пунктуацияOther punctuation | :Po:Po | Совпадает с (,), ?, «, !, @, #, %, &, *, , (:), (;), ‘, and /.Matches (,), ?, «, !, @, #, %, &, *, , (:), (;), ‘, and /. |
ПробелSpace separator | :Zs:Zs | Совпадает с пробелами.Matches blanks. |
Разделитель строкLine separator | :Zl:Zl | Соответствует символу Юникода U+2028.Matches the Unicode character U+2028. |
Разделитель абзацевParagraph separator | :Zp:Zp | Соответствует символу Юникода U+2029.Matches the Unicode character U+2029. |
Знак, отличный от пробельногоNon-spacing mark | :Mn:Mn | Совпадает со всеми знаками, отличными от пробельных.Matches non-spacing marks. |
Объединяющий знакCombining mark | :Mc:Mc | Совпадает с объединяющими знаками.Matches combining marks. |
Закрывающий знакEnclosing mark | :Me:Me | Совпадает с закрывающими знаками.Matches enclosing marks. |
Математический символMath symbol | :Sm:Sm | Совпадает со знаками +, =, ~, |, <, and >.Matches +, =, ~, |, <, and >. |
Символ валютCurrency symbol | :Sc:Sc | Совпадает со знаком $ и остальными символами валют.Matches $ and other currency symbols. |
Символ-модификаторModifier symbol | :Sk:Sk | Совпадает с символами-модификаторами, например двойным, одинарным диакритическим ударением и знаком долготы над гласными.Matches modifier symbols such as circumflex accent, grave accent, and macron. |
Другие символыOther symbol | :So:So | Совпадает с другими символами, например знаком авторских прав, знаком абзаца и знаком градуса.Matches other symbols, such as the copyright sign, the pilcrow sign, and the degree sign. |
Другие управляющие символыOther control | :Cc:Cc | Совпадает с концом строки.Matches end of line. |
Другие символы форматированияOther format | :Cf:Cf | Совпадает с управляющими символами форматирования, например двунаправленными управляющими символами.Formatting control character such as the bi-directional control characters. |
СуррогатSurrogate | :Cs:Cs | Совпадает с половиной суррогатной пары.Matches one half of a surrogate pair. |
Символы личного пользованияOther private-use | :Co:Co | Совпадает с символами из индивидуальной области.Matches any character from the private-use area. |
Другие не присвоенные символыOther not assigned | :Cn:Cn | Символы, не имеющие соответствия символам Юникода.Matches characters that do not map to a Unicode character. |
Определяет количество вхождений предыдущего символа или группы.Specify the number of occurrences of the preceding character or group. Дополнительные сведения см. в разделе Совпадение ровно n раз: {n}.For more information, see Match exactly n times. | {n}, где n обозначает число вхождений.{n}, where ‘n’ is the number of occurrences | x(ab){2}x совпадает с «xababx»x(ab){2}x matches «xababx» x(ab){2,3}x совпадает с «xababx» и «xabababx», но не «xababababx»x(ab){2,3}x matches «xababx» and «xabababx» but not «xababababx» |
В дополнение к стандартным свойствам символов Юникода в качестве набора символов могут быть объявлены следующие дополнительные свойства.In addition to the standard Unicode character properties, the following additional properties may be specified as part of a character set.
ВыражениеExpression | СинтаксисSyntax | ОписаниеDescription |
---|---|---|
Коэффициент альфаAlpha | :Al:Al | Совпадает с одним любым символом.Matches any one character. Например, «:Alда» совпадает со словами «правда», «вода» и «сдача».For example, :Alhe matches words such as «The», «then», and «reached». |
ЧисловойNumeric | :Nu:Nu | Совпадает с любым числом или цифрой.Matches any one number or digit. |
ПунктуацияPunctuation | :Pu:Pu | Совпадает с любым знаком пунктуации, например ?, @, ‘ и т. д.Matches any one punctuation mark, such as ?, @, ‘, and so on. |
ПробелWhite space | :Wh:Wh | Совпадает со всеми типами пробелов, включая публицистический и идеографический пробелы.Matches all types of white space, including publishing and ideographic spaces. |
Двунаправленный текстBidi | :Bi:Bi | Совпадает со всеми символами скриптов с записью справа налево, например арабский или иврит.Matches characters from right-to-left scripts such as Arabic and Hebrew. |
Символы Хангула (Hangul)Hangul | :Ha:Ha | Совпадает с корейскими символами Хангула и сочетающимися символами Джамоса (Jamos).Matches Korean Hangul and combining Jamos. |
ХираганаHiragana | :Hi:Hi | Совпадает с символами хираганы.Matches hiragana characters. |
КатаканаKatakana | :Ka:Ka | Совпадает с символами катаканы.Matches katakana characters. |
Идеографические символы / символы Хань / символы КандзиIdeographic/Han/Kanji | :Id:Id | Совпадает со всеми идеографическими символами, например символами Хань и Кандзи.Matches ideographic characters, such as Han and Kanji. |
См. также:See Also
- Поиск и заменаSearch and Replace
- Поиск текста с символами-шаблонамиSearch Text with Wildcards
Обратная связь
Источник
спользование регулярных выражений REGEXP в ORACLE SQL / Oracle SQL
Чалышев Максим Михайлович
Учебный тренинг. SQL от новичка до профессионала.
Бесплатные авторские видеокурсы SQL, PLSQL, JAVA
моя книга , изучаем Oracle SQL, бесплатно
Oracle SQL. 100 шагов от новичка до профессионала. 20 дней новых знаний и практики или платная печатная версия
Согласно Вики
Регулярные выражения (англ. regular expressions, сокр. RegExp, RegEx, жарг. регэкспы или регексы) это формальный язык поиска и осуществления манипуляций с подстроками в тексте , основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters).
По сути это строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска.
Для работы с регулярными выражениями в Oracle SQL используются следующие операторы REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, REG_EXPCOUNT, REG_INSTR
Рассмотрим работу каждой из этих команд и для наглядности создадим временную таблицу preserved_rows и заполним ее след.данными:
— Фамилия, ДАТА РОЖД, город проживания — данные представлены сплошным символьным буфером, с разделителем «,»
CREATE GLOBAL TEMPORARY TABLE regtest ON COMMIT PRESERVE ROWS
AS SELECT ‘Зайцев,01111998,Киев’ dt FROM dual union
SELECT ‘Иванов,01011982,Воронеж’ dt FROM dual union SELECT ‘Петров,01011988,Москва’ dt FROM dual;
REGEXP_LIKE
— REGEXP_LIKE выбирает из таблицы все строки соответвующие заданному шаблону регулярного выражения REGEXP
— пример использования REGEXP_LIKE(выражение; ‘regexp шаблон’) :
— выберем из таблицы все строчки которые содержат дату рождения в заданном формате REGEXP [0-9]{8}
select * from regtest where regexp_like(dt,'[0-9]{8}’)
— результат:
—Зайцев,01111998,Киев
—Иванов,01011982,Воронеж
—Петров,01011988,Москва
— добавим строку с нестандартным форматом даты
insert into regtest values (‘Волков,010A1988,Дмитров’);
—выполним запрос повтроно
select * from regtest where regexp_like(dt,'[0-9]{8}’)
—
результат
—Зайцев,01111998,Киев
—Иванов,01011982,Воронеж
—Петров,01011988,Москва
— REGEXP_REPLACE
— REGEXP_REPLACE заменяет шаболн регулярного выражения REGEXP в строке на заданный строку
— пример использования REGEXP_REPLACE(выражение; ‘regexp шаблон’, ‘regexp шаблон’ или константа) :
— заменим дату рождения в заданном формате REGEXP [0-9]{8} на выражене mydate
select REGEXP_REPLACE(t.dt,'[0-9]{8}’,’mydate’) rr from regtest t
-результат:
Зайцев,mydate,Киев
Иванов,mydate,Воронеж
Петров,mydate,Москва
Волков,010A1988,Дмитров
— REGEXP_SUBSTR
— REGEXP_SUBSTR выделяет из строки заданный REGEXP шаблон
— пример использования REGEXP_REPLACE(выражение; ‘regexp шаблон’; вхождение; параметр_сопоставления) :
— выделим дату рождения в заданном формате REGEXP [0-9]{8} из общей строки
select REGEXP_SUBSTR(t.dt,'[0-9]{8}’) rr,t.dt rr from regtest t
результат
01111998 Зайцев,01111998,Киев
01011982 Иванов,01011982,Воронеж
01011988 Петров,01011988,Москва
Волков,010A1988,Дмитров
— REGEXP_INSTR
— REGEXP_INSTR определяет номер первого символа вхождения REGEXP шаблона в строку
select REGEXP_instr(t.dt,'[0-9]{8}’) rr,t.dt rr from regtest t
— результат
8 Зайцев,01111998,Киев
8 Иванов,01011982,Воронеж
8 Петров,01011988,Москва
0 Волков,010A1988,Дмитров
— REGEXP_COUNT
REGEXP_COUNT определяет кол во вхождений REGEXP шаблона в строку
пример использования REGEXP_COUNT(выражение; ‘regexp шаблон’) :
определим кол цифр REGEXP [0-9] в строках таблицы
select REGEXP_COUNT(t.dt,'[0-9]{1}’) rr,t.dt rr from regtest t
— результат
8 Зайцев,01111998,Киев
8 Иванов,01011982,Воронеж
8 Петров,01011988,Москва
7 Волков,010A1988,Дмитров
Некоторые интересные примеры использования REGEXP
выбираем подстроку с разделителями, то есть строка Зайцев,01111998,Киев = Зайцев 01111998 Киев
для примера выберем только фамилию и город
select regexp_substr(t.dt,'[^,]+’,1,1) f, regexp_substr(t.dt,'[^,]+’,1,3) city from regtest t
результаты:111
Зайцев Киев
Иванов Воронеж
Петров Москва
Волков Дмитров
воспользовавшись данным методом в сочетании с командой CONNECT by можно преобразовать каджую подстроку с разделителями в строку таблицы
select regexp_substr(‘Петров,01011988,Москва’,'[^,]+’,1,level) ll
from dual
connect by level <= REGEXP_COUNT(‘Петров,01011988,Москва’,’,’)+1
Чалышев М.М www.orasource.ru
Источник