Oracle обрезать строку до количества символов

Обновлено: 03.07.2024

REGEXP_SUBSTR extends the functionality of the SUBSTR function by letting you search a string for a regular expression pattern. It is also similar to REGEXP_INSTR , but instead of returning the position of the substring, it returns the substring itself. This function is useful if you need the contents of a match string but not its position in the source string. The function returns the string as VARCHAR2 or CLOB data in the same character set as source_char .

This function complies with the POSIX regular expression standard and the Unicode Regular Expression Guidelines. For more information, refer to Oracle Regular Expression Support.

source_char is a character expression that serves as the search value. It is commonly a character column and can be of any of the data types CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB , or NCLOB .

pattern is the regular expression. It is usually a text literal and can be of any of the data types CHAR , VARCHAR2 , NCHAR , or NVARCHAR2 . It can contain up to 512 bytes. If the data type of pattern is different from the data type of source_char , then Oracle Database converts pattern to the data type of source_char . For a listing of the operators you can specify in pattern , refer to Oracle Regular Expression Support.

position is a positive integer indicating the character of source_char where Oracle should begin the search. The default is 1, meaning that Oracle begins the search at the first character of source_char .

occurrence is a positive integer indicating which occurrence of pattern in source_char Oracle should search for. The default is 1, meaning that Oracle searches for the first occurrence of pattern .

If occurrence is greater than 1, then the database searches for the second occurrence beginning with the first character following the first occurrence of pattern , and so forth. This behavior is different from the SUBSTR function, which begins its search for the second occurrence at the second character of the first occurrence.

match_param is a character expression of the data type VARCHAR2 or CHAR that lets you change the default matching behavior of the function. The behavior of this parameter is the same for this function as for REGEXP_COUNT . Refer to REGEXP_COUNT for detailed information.

For a pattern with subexpressions, subexpr is a nonnegative integer from 0 to 9 indicating which subexpression in pattern is to be returned by the function. This parameter has the same semantics that it has for the REGEXP_INSTR function. Refer to REGEXP_INSTR for more information.

Appendix C in Oracle Database Globalization Support Guide for the collation determination rules, which define the collation REGEXP_SUBSTR uses to compare characters from source_char with characters from pattern , and for the collation derivation rules, which define the collation assigned to the character return value of this function

The following example examines the string, looking for the first substring bounded by commas. Oracle Database searches for a comma followed by one or more occurrences of non-comma characters followed by a comma. Oracle returns the substring, including the leading and trailing commas.

The next two examples use the subexpr argument to return a specific subexpression of pattern . The first statement returns the first subexpression in pattern :

The next statement returns the fourth subexpression in pattern :

REGEXP_SUBSTR pattern matching: Examples

The following statements create a table regexp_temp and insert values into it:

In the following example, the statement queries the email column and searches for valid email addresses:

In the following example, the statement queries the email column and returns the count of valid email addresses:

View and run related examples on Oracle Live SQL at REGEXP_SUBSTR pattern matching

In the following example, numbers and alphabets are extracted from a string:

View and run a related example on Oracle Live SQL at REGEXP_SUBSTR - Extract Numbers and Alphabets

In the following example, passenger names and flight information are extracted from a string:

View and run a related example on Oracle Live SQL at REGEXP_SUBSTR - Extract Passenger Names and Flight Information

В посте рассматриваются однострочные функции SUBSTR и INSTR, работающие с символьными данными.

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

Функции манипулирования символами используются для извлечения, преобразования и форматирования символьных строк. К этому классу относятся функции CONCAT, LENGTH, LPAD, RPAD, TRIM, REPLACE и рассматриваемые нижу функции SUBSTR и INSTR.

Функция SUBSTR принимает три параметра и возвращает строку, состоящую из количества символов, извлеченных из исходной строки, начиная с указанной начальной позиции:

SUBSTR (строка, начальная позиция, количество символов).

В приведенном примере извлекаются символы с первой по четвертую позиции из значений колонки last_name. Для сравнения выводятся исходные значения колонки last_name.


Функция INSTR возвращает число, представляющее позицию в исходной строке, начиная с заданной начальной позиции, где n-ное вхождение элемента поиска начинается:

INSTR (строка, элемент поиска, [начальная позиция], [n-ное вхождение элемента поиска]

Следующий запрос показывает позицию строчной буквы a для каждой строки колонки last_name. Если в строке встречаются два или более символов a, то будет отображена позиция первого/начального из них. Для сравнения и анализа выводятся исходные значения колонки.


Если необходимо также отобразить позицию заглавной буквы А в фамилии, то надо предварительно перевести все символы фамилии в строчные, используя вложенную функцию LOWER. Запрос выглядит следующим образом:


Как видно из результата, теперь позиция заглавной буквы A тоже определяется, например, для Abel, Ande, Atkinson, Austin возвращается значение 1.

В посте приведен пример совместного применения таких функций, как LENGTH, SUBSTR и INSTR.


Использование SQL функций в базе данных Oracle на примерах

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

Однострочные функции

Однострочные функции (single-row functions) обычно применяются для выполнения задач вроде преобразования слова из нижнего регистра в верхний или наоборот или замены какой-нибудь части текста в строке. Ниже перечислены наиболее важные однострочные функции, которые часто используются в Oracle.

  • CONCAT . Соединяет или объединяет две или более строк в одну.
  • LENGTH . Вычисляет длину строки символов.
  • LOWER . Преобразует буквы из верхнего регистра в нижний, как показано в следующем примере:
  • SUBSTR . Возвращает часть строки.
  • INSTR . Возвращает число, обозначающее позицию, в которой в строке начинается определенное строковое значение.
  • LPAD . Дополняет строку пробелами (padding) слева для достижения ею указанной длины и затем возвращает ее.
  • RPAD . Дополняет строку пробелами справа.
  • TRIM . Обрезает строку символов указанным образом.
  • REPLACE . Заменяет каждое вхождение заданной строки той строкой, которая была указана в качестве замены.

Агрегатные функции SQL

Агрегатные функции (aggregate functions) применяются для вычисления деталей наподобие средних и суммарных значений выбранного столбца в запросе. Ниже перечислены наиболее важные агрегатные функции.

  • MIN . Возвращает наименьшее значение и используется, например, так:
  • MAX . Возвращает наибольшее значение.
  • AVG . Вычисляет среднее значения столбца.
  • SUM . Вычисляет суммарное значение столбца:
  • COUNT . Возвращает информацию об общем количестве столбцов.
  • COUNT (*). Возвращает информацию о количестве строк в таблице.

Числовые и календарные функции SQL

В состав Oracle входит несколько числовых функций (number functions), которые принимают числовые входные параметры и возвращают числовые значения. Календарные функции (date functions) помогают форматировать значения даты и времени несколькими способами. Ниже перечислены некоторые наиболее важные числовые и календарные функции.

  • ROUND . Возвращает число, округленное на указанное количество позиций справа от десятичной запятой.
  • TRUNC . Возвращает результат усечения даты в указанном формате.
  • SYSDATE . Применяется довольно часто и возвращает текущее значение даты и времени:
  • TO_TIMESTAMP . Преобразует тип данных CHAR или VARCHAR в тип данных TIMESTAMP .
  • TO_DATE . Служит для изменения текущего формата даты. Стандартный формат даты в Oracle выглядит так: ДД-МММ-ГГГГ ( 07-AUG-2008 ).
  • Функция TO_DATE принимает символьную строку с действительными данными внутри и преобразует ее в принятый по умолчанию формат даты в Oracle. Она может также изменять формат даты, как показано ниже:
  • TO_CHAR . Преобразует дату в символьную строку, как показано в следующем примере:
  • TO_NUMBER . Преобразует символьную строку в числовой формат:

Обучение применению SQL функций в СУБД Oracle с примерами

Универсальные и условные функции SQL

В Oracle предлагаются кое-какие очень мощные универсальные (general) и условные (conditional) функции, которые позволяют увеличивать мощь простых SQL-операторов до уровня, подобного конструкциям традиционных языков программирования. Условные функции помогают делать выбор между несколькими вариантами. Ниже перечислены наиболее важные универсальные и условные функции, которые могут применяться в Oracle.

  • NVL . Заменяет значение в столбце таблицы тем, что указано после запятой, если в столбце содержится нулевое значение ( NULL ). То есть она заботится о значениях столбцов, если те являются нулевыми, и преобразует их в ненулевые:
  • COALESCE . Похожа на функцию NVL , но возвращает первое ненулевое значение в списке:
  • DECODE . Применяется для включения в SQL-код базовой логики if-then . В следующем примере всем избирателям в таблице присваивается имя соответствующей партии на основе значения в столбце членства. В случае если у избирателя нет никакого значения в столбце членства, ему присваивается статус независимого избирателя ( Independent ):
  • CASE . Предоставляет те же функциональные возможности, что и функция DECODE , но гораздо более понятным и элегантным образом. Ниже приведен пример использования функции CASE , где она помогает включить в код логику if-then :

Аналитические функции SQL

Предлагаемые в Oracle аналитические функции SQL являются мощными инструментами для приложений бизнес-аналитики. В Oracle заявляют, что в случае применения этих функций скорость выполнения запросов может увеличиваться на 200–500%. Они предназначены для выполнения сложных суммарных вычислений без написания слишком большого объема кода. Ниже перечислены наиболее важные аналитические функции SQL, которые могут применяться в базе данных Oracle.

Функции ранжирования (ranking functions). Такие функции позволяют ранжировать элементы набора данных в соответствии с определенными критериями. В Oracle доступно несколько функций ранжирования: RANK, DENSE_RANK, CUME_DIST, PERCENT_RANK и NTILE . В листинге 1 приведен простой пример,
показывающий, как функция ранжирования помогает расположить в нужном порядке данные по продажам.

Символьные функции PL/SQL на примерах

Символьная функция получает в качестве параметра одно или несколько символьных значений и возвращает символьное и числовое значение. Если символьная функция возвращает символьное значение, оно всегда имеет тип VARCHAR2 (переменная длина) — кроме функций UPPER и LOWER . Эти функции преобразуют заданную строку к верхнему или нижнему регистру соответственно и возвращают значение фиксированной длины типа CHAR , если переданные в аргументах строки имели тип CHAR .

Краткая сводка строковых функций

Как упоминалось ранее, PL/SQL предоставляет в распоряжение программиста широкий набор мощных, высокоуровневых строковых функций для получения информации о строках и модификации их содержимого. Следующий список дает представление об их возможностях и синтаксисе. За полной информацией о конкретных функциях обращайтесь к справочнику Oracle SQL Reference.

  • ASCII(символ ) Возвращает числовой код (NUMBER) представления заданного символа в наборе символов базы данных.
  • ASCIISTR(строка1) Получает строку в любом наборе символов и преобразует ее в строку ASCII-символов. Все символы, отсутствующие в кодировке ASCII, представляются в форме \XXXX, где XXXX — код символа в Юникоде.
  • CHR(код)
    Возвращает символ типа VARCHAR2 (длина 1), соответствующий заданному коду. Функция является обратной по отношению к функции ASCII. У нее имеется разновидность, удобная при работе с данными в национальных наборах символов:

Возвращает символ типа NVARCHAR2 из национального набора символов.

  • COMPOSE(строка1)
    Получает строку символов в формате Юникода и возвращает ее в нормализованном виде. Например, ненормализованное представление 'a\0303' определяет символ ' a ' с тильдой cверху (то есть a). Вызов COMPOSE('a\0303') возвращает значение ' \00E3' — шестнадцатеричный код символа a в Юникоде.

В Oracle9i Release 1 функция COMPOSE могла вызываться только из SQL-команд; в программах PL/SQL она использоваться не могла. Начиная с Oracle9i Release2, функция COMPOSE также может использоваться в выражениях PL/SQL.

  • CONCAT(строка1, строка2)
    Присоединяет строку2 в конец строки1. Аналогичного результата можно добиться при помощи выражения строка1 || строка2. Оператор || намного удобнее, поэтому функция CONCAT используется относительно редко.
  • CONVERT(строка1, набор_символов)
    Преобразует строку из набора символов базы данных в заданный набор символов. При вызове также можно задать исходный набор символов:

CONVERT(строка1, конечный_набор, исходный_набор)

    DECOMPOSE(строка1)
    Получает строку в Юникоде и возвращает строку, в которой все составные символы разложены на элементы. Функция является обратной по отношению к COMPOSE . Например, вызов DECOMPOSE ('a') возвращает строку ' a

Существует две разновидности этой функции:

  • DECOMPOSE(строка1 CANONICAL)
    Выполняет каноническую декомпозицию; полученный результат может быть восстановлен вызовом COMPOSE . Используется по умолчанию.
  • DECOMPOSE(строка1)
    Декомпозиция выполняется в так называемом режиме совместимости. Восстановление вызовом COMPOSE может оказаться невозможным.

Функция DECOMPOSE , как и COMPOSE , не может напрямую вызываться в выражениях PL/SQL в Oracle9i Release 1; ее необходимо вызывать из инструкций SQL. Начиная с Oracle9i Release 2, это ограничение было снято.

Существует несколько разновидностей этой функции:

  • INSTR(строка1, строка2, начальная_позиция)
    Поиск строки2 в строке1 начинается с позиции, заданной последним параметром. По умолчанию поиск начинается с позиции 1, так что вызов INSTR(string1, string2, 1 ) эквивалентен вызову INSTR(string1, string2) .
  • INSTR(строка1, строка2, отрицательная_начальная_позиция)
    Смещение начальной позиции задается не от начала, а от конца строки1.
  • INSTR(строка1, строка2, начальная_позиция, n )
    Находит n-е вхождение строки2, начиная с заданной начальной позиции.
  • INSTR(строка1, строка2, отрицательная_начальная_позиция, n)
    Находит n-е вхождение строки2, начиная с заданной начальной позиции от конца строки1.

Функция INSTR рассматривает строку как последовательность символов. Ее разновидности INSTRB, INSTR2 и INSTR4 рассматривают строку как последовательность байтов, кодовых единиц (code units) или кодовых индексов (code points) Юникода соответственно. Разновидность INSTRC рассматривает строку как последовательность полных символов Юникода. Например, строка 'a\0303' , которая представляет собой разложенный эквивалент '\00E3', или a , рассматривается как один символ. Напротив, функция INSTR рассматривает 'a\0303 ' как последовательность из двух символов.

  • LEAST(строка1, строка2, . )
    Получает одну или несколько строк и возвращает строку, которая оказалась бы первой (то есть наименьшей) при сортировке входных строк по возрастанию. Также см. описание функции GREATEST , обратной по отношению к LEAST .
  • LENGTH(строка1)
    Возвращает количество символов в строке. Разновидности LENGTHB, LENGTH2 и LENGTH4 возвращают количество байтов, кодовых единиц (code units) или кодовых индексов (code points) Юникода соответственно. Разновидность LENGTHC возвращает количество полных символов Юникода, нормализованных по мере возможности (то есть с преобразованием 'a\0303 ' в '\00E3' ).

Функция LENGTH обычно не возвращает нуль. Вспомните, что Oracle рассматривает пустую строку ('') как NULL , поэтому вызов LENGTH ('') фактически эквивалентен попытке получить длину NULL ; ее результат тоже будет равен NULL . Единственное исключение встречается при применении LENGTH к типу CLOB . Тип CLOB может содержать 0 байт и при этом быть отличным от NULL . В этом единственном случае LENGTH возвращает 0.

  • LOWER(строка1)
    Преобразует все буквы заданной строки в нижний регистр. Функция является обратной по отношению к UPPER . Тип возвращаемого значения соответствует типу входных данных ( CHAR ,VARCHAR2, CLOB ). Также см. NLS_LOWER .
  • LPAD(строка1, итоговая_длина)
    Возвращает значение строки1, дополненное слева пробелами до итоговой_длины . У функции существует следующая разновидность:
  • LPAD(строка1, итоговая_длина, заполнитель)
    Присоединяет достаточное количество полных или частичных вхождений заполнителя, чтобы общая длина строки достигла заданной итоговой_длины . Например, вызов LPAD ( 'Merry Christmas!', 25, 'Ho! ') вернет результат ' Ho! Ho! HMerry Christmas!'.
  • ?LTRIM(строка1)
    Удаляет пробелы с левого края строки1. Также см. описания функций TRIM (стандарт ISO) и RTRIM . У функции существует следующая разновидность:
  • LTRIM(строка1, удаляемый_набор)
    Удаляет любые символы, входящие в строку удаляемый_набор , от левого края строки1.
  • NCHR(код)
    Возвращает символ типа NVARCHAR2 (длина 1) , соответствующий заданному коду. Функция CHR с условием USING NCHAR_CS реализует ту же функциональность, что и NCHR .
  • NLS_INITCAP (строка1)
    Возвращает версию строки1, которая должна относиться к типу NVARCHAR2 или NCHAR , в которой первая буква каждого слова переводится в верхний регистр, а остальные буквы — в нижний. Функция возвращает значение типа VARCHAR2 . «Словом» считается последовательность символов, отделенная от остальных символов пробелом или символом, не являющимся буквенно-цифровым.

Вы можете задать порядок сортировки, влияющий на определение «первой буквы»:

  • NLS_INITCAP(строка1, 'NLS_SORT=правило_сортировки')
    В этой форме синтаксиса правило_сортировки представляет собой одно из допустимых названий правил сортировки, перечисленных в руководстве Oracle Database Globalization Support Guide, Appendix A, раздел «Linguistic Sorts».

Следующий пример показывает, чем функция INITCAP отличается от NLS_INITCAP :

В нидерландском языке последовательность символов « ? » рассматривается как один символ. Функция NLS_INITCAP распознает это обстоятельство при задании правила NLS_SORT и правильно преобразует символы слова « ?zer » («железо» по-нидерландски).

  • NLS_LOWER(строка1) и NLS_LOWER(строка1, 'NLS_SORT=правило_сортировки ') Возвращает строку1, преобразованную в нижний регистр по правилам заданного языка. О том, как NLS_SORT может повлиять на результат преобразования, рассказано в описании функции NLS_INITCAP .
  • NLS_UPPER(строка1) и NLS_UPPER(строка1, 'NLS_SORT=правило_сортировки') Возвращает строку1, преобразованную в верхний регистр по правилам заданного языка. О том, как NLS_SORT может повлиять на результат преобразования, рассказано в описании функции NLS_INITCAP .
  • NLSSORT(строка1) и NLSSORT(строка1, 'NLS_SORT=правило_сортировки ') Возвращает строку байтов, которая может использоваться для сортировки строкового значения по правилам заданного языка. Строка возвращается в формате RAW . Например, сравнение двух строк по правилам французского языка выполняется так: IF NLSSORT(x, 'NLS_SORT=XFRENCH') > NLSSORT(y, 'NLS_SORT=XFRENCH') THEN. Если второй параметр не указан, функция использует порядок сортировки по умолчанию, назначенный для сеанса. Полный список правил приведен в руководстве Oracle Database Globalization Support Guide, Appendix A, раздел «Linguistic Sorts».
  • REGEXP_COUNT, REGEXP_INSTR, REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR За описаниями этих функций, предназначенных для работы с регулярными выражениями, можно изучить эту статью.
  • REPLACE(строка1, искомая_строка, замена) Возвращает строку, полученную в результате замены всех вхождений искомой_строки в строке1 строкой замена. Функция REPLACE может использоваться для замены всех вхождений определенной подстроки в одной инструкции.
  • REPLACE(строка1, искомая_строка)
    Возвращает строку, полученную в результате удаления всех вхождений искомой_строки из строки1.
  • RPAD(строка1, итоговая_длина)
    Возвращает значение строки1, дополненное справа пробелами до итоговой_длины . У функции существует следующая разновидность:
  • RPAD(строка1, итоговая_длина, заполнитель)
    Присоединяет достаточное количество полных или частичных вхождений заполнителя, чтобы общая длина строки достигла заданной итоговой_длины . Вызов RPAD('Merry Christmas!', 25, 'Ho! ') вернет результат 'Merry Christmas! Ho! Ho!'.

Функция RPAD дополняет строку справа, а парная ей функция LPAD — слева.

  • RTRIM(строка1)
    Удаляет пробелы с правого края строки1. Также см. описания функций TRIM (стандарт ISO) и LTRIM . У функции существует следующая разновидность:
  • RTRIM(строка1, удаляемый_набор)
    Удаляет любые символы, входящие в строку удаляемый_набор , с правого края строки1.
  • SOUNDEX(строка1)
    Возвращает строку с «фонетическим представлением» аргумента.
    Пример:

При использовании функции SOUNDEX следует помнить несколько правил:

  • Значение SOUNDEX всегда начинается с первой буквы входной строки.
  • Возвращаемое значение генерируется только по первым пяти согласным в строке.
  • Для вычисления цифровой части SOUNDEX используются только согласные. Все гласные в строке, кроме начальных, игнорируются.
  • Функция SOUNDEX игнорирует регистр символов; для букв верхнего и нижнего регистра генерируются одинаковые значения SOUNDEX .

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

Алгоритм SOUNDEX ориентирован на английский язык; в других языках он может работать плохо (или не работать вообще).

  • SUBSTR(строка1, начальная_позиция, длина)
    Возвращает подстроку из строки1, которая начинается с начальной_позиции и имеет заданную длину. Если количество символов до конца строки1 окажется меньше длины, возвращаются все символы от начальной позиции до конца строки. У функции существуют следующие разновидности:
  • SUBSTR(строка1, начальная_позиция)
    Возвращает все символы от начальной_позиции до конца строки1.
  • SUBSTR(строка1, отрицательная_начальная_позиция, длина)
    Начальная позиция подстроки отсчитывается от конца строки1.
  • SUBSTR(строка1, отрицательная_начальная_позиция)
    Возвращает последние ABS( отрицательная_начальная_позиция ) строки.

Функция SUBSTR рассматривает строку как последовательность символов. Ее разновидности SUBSTRB, SUBSTR2 и SUBSTR4 рассматривают строку как последовательность байтов, кодовых единиц (code units) или кодовых индексов (code points) Юникода соответственно. Разновидность SUBSTRC рассматривает строку как последовательность полных символов Юникода. Например, строка 'a\0303' , которая представляет собой разложенный эквивалент '\00E3' , или a , рассматривается как один символ. Напротив, функция SUBSTR рассматривает 'a\0303' как последовательность из двух символов.

  • TO_CHAR(национальные_символьные_данные)
    Преобразует данные из национального набора символов в эквивалентное представление в наборе символов базы данных. Также см. TO_NCHAR .

Функция TO_CHAR также может использоваться для преобразования даты/ времени и чисел в удобочитаемую форму.

  • TO_MULTI_BYTE(строка1)
    Преобразует однобайтовые символы в их многобайтовые эквиваленты. В некоторых многобайтовых кодировках, и прежде всего UTF-8, может существовать несколько вариантов представления одного символа. Скажем, в UTF-8 представление буквы 'G' может содержать от 1 до 4 байт. Для перехода от однобайтового представления к многобайтовому используется функция TO_MULTI_BYTE . Данная функция является обратной по отношению к TO_SINGLE_BYTE .
  • TO_NCHAR(символы_в_наборе_базы_данных)
    Преобразует данные из набора символов базы данных в эквивалентное представление в национальном наборе символов. Также см. TO_CHAR и TRANSLATE. USING.

Функция TO_NCHAR также может использоваться для преобразования даты/времени и чисел в удобочитаемую форму.

  • TO_SINGLE_BYTE(строка1)
    Преобразует многобайтовые символы в их однобайтовые эквиваленты. Функция является обратной по отношению к TO_MULTI_BYTE .
  • TRANSLATE(строка1, искомый_набор, набор_замены)
    Заменяет в строке1 каждое вхождение символа из искомого_набора соответствующим символом набора_замены . Пример:

Если искомый_набор содержит больше символов, чем набор_замены , «лишние» символы, не имеющие соответствия в наборе_замены , не включаются в результат. Пример:

Буква « d » удалена, потому что она присутствует в искомом_наборе , но не имеет эквивалента в наборе_замены . Функция TRANSLATE заменяет отдельные символы, а функция REPLACE — целые строки.

  • TRANSLATE(текст USING CHAR_CS) и TRANSLATE(текст USING NCHAR_CS)
    Преобразует символьные данные в набор символов базы данных ( CHAR_CS ) или в национальный набор символов ( NCHAR_CS ). Выходным типом данных будет VARCHAR2 или NVARCHAR2 в зависимости от того, выполняется ли преобразование к набору символов базы данных или национальному набору символов соответственно.

Функция TRANSLATE. USING входит в число функций SQL по стандарту ISO. Начиная с Oracle9i Release 1, можно просто присвоить значение VARCHAR2 переменной типа NVARCHAR2 , и наоборот — система неявно выполнит нужное преобразование. Если же вы хотите выполнить преобразование явно, используйте функции TO_CHAR и TO_NCHAR для преобразования текста в набор символов базы данных и национальный набор символов соответственно. Oracle рекомендует пользоваться указанными функциями вместо TRANSLATE. USING , потому что они поддерживают более широкий набор входных типов данных.

  • TRIM(FROM строка1)
    Возвращает строку, полученную в результате удаления из строки1 всех начальных и конечных пробелов. У функции существуют следующие разновидности:
  • TRIM(LEADING FROM . )
    Удаление только начальных пробелов.
  • TRIM(TRAILING FROM . )
    Удаление только конечных пробелов.
  • TRIM(BOTH FROM . )
    Удаление как начальных, так и конечных пробелов (используется по умолчанию).
  • TRIM (. удаляемый_символ FROM строка1)
    Удаление вхождений одного удаляемого_символа на выбор программиста.

Функция TRIM была включена в Oracle8i для обеспечения более полной совместимости со стандартом ISO SQL. Она сочетает в себе функциональность LTRIM и RTRIM , но отличается от них тем, что TRIM позволяет задать только один удаляемый символ, тогда как при использовании LTRIM и RTRIM можно задать набор удаляемых символов.

  • UNISTR(строка1)
    Возвращает строку1, преобразованную в Юникод; таким образом, функция является обратной по отношению к ASCIISTR . Для представления непечатаемых символов во входной строке можно использовать запись \XXXX, где XXXX — кодовый индекс символа в Юникоде. Пример:

Функция предоставляет удобный доступ ко всему набору символов Юникода, в том числе и к тем, которые не могут вводиться непосредственно с клавиатуры.

Читайте также: