Документация по PostgreSQL 9.1.1 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 9. Функции и операторы | Fast Forward | Next |
Данный раздел описывает функции и операторы для анализа и обработки значений типа bytea.
SQL определяет некоторые строковые функции, которые используют для отделения аргументов друг от друга ключевые слова, а не запятые. Подробности см. в Table 9-8. PostgreSQL также предоставляет версии этих функций, которые используют обычный синтаксис вызова функции (см. Table 9-9).
Note: Представленные результаты, показанные на данной странице означают, что параметр сервера bytea_output установлен в escape (традиционный формат для PostgreSQL).
Table 9-8. SQL Операторы и функции для работы с битовыми строками
Функция | Возвращаемый тип | Описание | Пример | Результат |
---|---|---|---|---|
string || string | bytea | Слияние строк (конкатенация) | E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
octet_length(string)
| int | Крличество байт в бинарной строке | octet_length(E'jo\\000se'::bytea) | 5 |
overlay(string placing string from int [for int])
| bytea | Замена подстроки | overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) | T\\002\\003mas |
position(substring in string)
| int | Местоположение заданной подстроки | position(E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
substring(string [from int] [for int])
| bytea | Извлечение подстроки | substring(E'Th\\000omas'::bytea from 2 for 3) | h\000o |
trim([both]
bytes from
string)
| bytea | Удалить наиболее длинную строку, содержащую только байты, перечисленные в bytes от начала и до конца string | trim(E'\\000'::bytea from E'\\000Tom\\000'::bytea) | Tom |
В Table 9-9 перечисляются дополнительные функции для манипуляции бинарными строками. Некоторые их них используются для внутренних нужд, для реализации строковых функций по SQL стандарту, перечисленных в Table 9-8.
Table 9-9. Доугие функции для работы с бинарными строками
Функция | Возвращаемый тип | Описание | Пример | Результат |
---|---|---|---|---|
btrim(string
bytea, bytes bytea)
| bytea | Удалить наиболее длинную строку, содержащую только байты, перечисленные в bytes, от начала и до конца string | btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) | trim |
decode(string text,
type text)
| bytea | Декодировать бианрную строку из string, которая была
ранее закодирована функцией encode . Тип параметра такой же как
и в encode .
| decode(E'123\\000456', 'escape') | 123\000456 |
encode(string bytea,
type text)
| text | Закодировать бинарную строку в ASCII представление. Поддерживают такие типы кодирования как: base64, hex, escape. | encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
get_bit(string, offset)
| int | Извлечь бит из строки | get_bit(E'Th\\000omas'::bytea, 45) | 1 |
get_byte(string, offset)
| int | Извлечь байт из строки | get_byte(E'Th\\000omas'::bytea, 4) | 109 |
length(string)
| int | Длина бинарной строки | length(E'jo\\000se'::bytea) | 5 |
md5(string)
| text | Подсчитывает MD5 хэш строки string, возвращая результат в шестнадцетиричном виде | md5(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |
set_bit(string,
offset, newvalue)
| bytea | Установить бит в строке | set_bit(E'Th\\000omas'::bytea, 45, 0) | Th\000omAs |
set_byte(string,
offset, newvalue)
| bytea | Установить байт в строке | set_byte(E'Th\\000omas'::bytea, 4, 64) | Th\000o@as |
В функциях get_byte
и set_byte
первый байт в
бинарной строке имеет номер 0. В функциях get_bit
и
set_bit
нумерация битов осуществляется для каждого байта справа;
например бит 0 — это наименее значимый бит первого байта, а
бит 15 наиболее значимый бит во втором байте.