Иллюстрированный самоучитель по PostgreSQL

Строковые операторы

В PostgreSQL существует обширный набор строковых операторов для выполнения различных действий, от простой конкатенации текста и сравнения строк до поиска по регулярным выражениям. Строковые операторы работают с типами char, varchar, а также с собственным типом PostgreSQL text.

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

Базовые операторы сравнения

Базовые операторы сравнения строк и конкатенации, поддерживаемые в PostgreSQL, перечислены в табл. 5.1.

Примечание
Ключевые слова LIKE и ILIKE, приводящие к вызову функции like(), иногда называются операторами сравнения строк. Эти ключевые слова рассматриваются ниже в разделе "Функции"
.

Таблица 5.1. Базовые строковые операторы.

Оператор Синтаксис Описание
= 'строка1' = ' строка2' Возвращает true, если первая строка точно совпадает со второй
! = 'строка1'!= ' строка2' Возвращает true, если первая строка не совпадает со второй
<> 'строка1' <> ' строка2' Идентичен оператору !=
< 'строка1' < ' строка2' Возвращает true, если при лексикографической сортировке первая строка предшествует второй
<= 'строка1' <= ' строка2' Возвращает true, если при лексикографической сортировке первая строка предшествует второй или их значения совпадают
> 'строка1' > ' строка2' Возвращает true, если при лексикографической сортировке вторая строка предшествует первой
>= 'строка1' >= ' строка2' Возвращает true, если при лексикографической сортировке вторая строка предшествует первой или их значения совпадают

Все операторы сравнения строк возвращают логическое значение (true или false). Лексикографическая сортировка, упоминаемая в табл. 5.1, последовательно сравнивает символы строк и определяет, какой из символов "больше" другого. Если начальные символы двух строк совпадают, проверяются следующие символы (слева направо). Перебор продолжается до тех пор, пока не будут найдены два различающихся символа. В этом алгоритме сортировки "больший" символ выбирается сравнением ASCII-кодов, как показывает следующий пример:

booktown=# SELECT letter, ascii(letter)
booktown-# FROM text_sorting
booktown-# ORDER BY letter ASC;
letter ascii
0 48
1 49
2 50
3 51
A 65
В 66
С 67
D 68
a 97
b 98
с 99
d I 100
(12 rows)

Если вы не уверены в порядке сортировки того или иного символа, воспользуйтесь функцией ascii () для получения его ASCII-кода (функция ascii () описана ниже в разделе "Функции"). В листинге 5.3 из таблицы books выбираются названия всех книг, первая буква которых при сортировке предшествует символу "D".

Листинг 5.3. Сравнение строк.

booktown=# SELECT title FROM books
booktown=# WHERE substrCtitle, 1, 1) < 'D1;
title
2001: A Space Odyssey
Bartholomew and the Oobleck
(2 rows)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.