Инструменты пользователя

Инструменты сайта


Боковая панель

Введение

Статьи и часто задаваемые вопросы

Установка и настройка

Обработка ошибок

Полезные запросы SQL

Тематические группы

similar_to



SIMILAR TO

Версии сервера

0.9 1.0 1.5.3 1.5.4 1.5.5 2.0 2.0.3 2.0.4 2.1 2.5 3.0
- - - - - - - - - + +

Доступно в

Формат

<предикат similar> ::=
<значение> [ NOT ] SIMILAR TO <шаблон> [ ESCAPE <специальный символ> ]

<шаблон> ::= <regular expression>

<regular expression> ::=
<regular term>
| <regular expression> <вертикальная черта> <regular term>

<regular term> ::=
<regular factor>
| <regular term> <regular factor>

<regular factor> ::=
<regular primary>
| <regular primary> <символ звездочка>
| <regular primary> <символ плюс>
| <regular primary> <вопросительный знак>
| <regular primary> <repeat factor>

<repeat factor> ::= <открывающая фигурная скобка> <нижняя граница>
[ <запятая> [ <верхняя граница> ] ] <закрывающая фигурная скобка>

<нижняя граница> ::= <неотрицательное целое>

<верхняя граница> ::= <неотрицательное целое>

<regular primary> ::=
<символьный спецификатор>
| <символ процента>
| <regular character set>
| <открывающая круглая скобка> <regular expression> <закрывающая круглая скобка>

<символьный спецификатор> ::=
<обычный символ>
| <escaped character>

<regular character set> ::=
<символ подчеркивания>
| <открывающая квадратная скобка> <перечисление символов>... <закрыв. квадратная скобка>
| <открывающая квадратная скобка> <символ циркумфлекс> <перечисление символов>...
<закрывающая квадратная скобка>
| <открывающая квадратная скобка> <перечисление включения>... <символ циркумфлекс>
<перечисление исключения>... <закрывающая квадратная скобка>

<перечисление включения> ::= <перечисление символов>

<перечисление исключения> ::= <перечисление символов>

<перечисление символов> ::=
<символьный спецификатор>
| <символьный спецификатор> <символ минус> <символьный спецификатор>
| <открывающая квадратная скобка> <символ двоеточие> <идентификатор класса символа>
<символ двоеточие> <закрывающая квадратная скобка>

<идентификатор класса символа> ::=
ALPHA
| UPPER
| LOWER
| DIGIT
| SPACE
| WHITESPACE
| ALNUM

<символ циркумфлекс> ::= ^

<вертикальная черта> ::= |

<символ звездочка> ::= *

Описание

Для поддержки регулярных выражений добавлен новый предикат SIMILAR TO. Предикат проверяет, соответствует ли строковый аргумент заданному регулярному выражению (согласно стандарту SQL). Предикат может быть использован в любом контексте, который принимает булевы (логические) выражения, такие как предложения WHERE, ограничения CHECK и PSQL-оператор IF().

Идентификаторы класса символа

Идентификатор Описание Примечание
ALPHA Все латинские буквы (a-z, A-Z) Включает и латинские буквы с ударениями,
если используется последовательность сортировки,
нечувствительная к ударению
UPPER Все прописные латинские буквы (A-Z) Включает строчные буквы,
если используется регистронезависимая последовательность сортировки
LOWER Все строчные латинские буквы (a-z) Включает прописные буквы,
если используется регистронезависимая последовательность сортировки
DIGIT Все арабские цифры (0-9)
SPACE Пробел (ASCII 32)
WHITESPACE Все символы-разделители
(горизонтальная табуляция (9), перевод строки (10),
вертикальная табуляция (11), возврат каретки (13),
перевод страницы (12), пробел (32))
ALNUM Все латинские буквы (ALPHA) и арабские цифры (DIGIT)

Руководство к использованию

Возвращает ИСТИНУ для строк, которые соответствуют хотя бы одному из перечисленных элементов регулярного выражения: <regular expression> <вертикальная черта> <regular term>

'ab' SIMILAR TO 'ab|cd|efg'  -- истина
'efg' SIMILAR TO 'ab|cd|efg' -- истина
'a' SIMILAR TO 'ab|cd|efg'   -- ложь

Проверяет нулевое или большее количество вхождений <regular primary> в строку: <regular primary> <символ звездочка>

'' SIMILAR TO 'a*'    -- истина
'a' SIMILAR TO 'a*'   -- истина
'aaa' SIMILAR TO 'a*' -- истина

Проверяет одинарное или большее количество вхождений <regular primary> в строку: <regular primary> <символ плюс>

'' SIMILAR TO 'a+'    -- ложь
'a' SIMILAR TO 'a+'   -- истина
'aaa' SIMILAR TO 'a+' -- истина

Проверяет одинарное или нулевое количество вхождений <regular primary> в строку: <regular primary> <вопросительный знак>

'' SIMILAR TO 'a?'    -- истина
'a' SIMILAR TO 'a?'   -- истина
'aaa' SIMILAR TO 'a?' -- ложь

Проверяет точное количество (<low value>) вхождений <regular primary> в строку: <regular primary> <открывающая фигурная скобка> <нижняя граница> <закрывающая фигурная скобка>

'' SIMILAR TO 'a{2}'    -- ложь
'a' SIMILAR TO 'a{2}'   -- ложь
'aa' SIMILAR TO 'a{2}'  -- истина
'aaa' SIMILAR TO 'a{2}' -- ложь

Проверяет точное (<low value>) или большее количество вхождений <regular primary> в строку: <regular primary> <открывающая фигурная скобка> <нижняя граница> <запятая> <закрывающая фигурная скобка>:

'' SIMILAR TO 'a{2,}'    -- ложь
'a' SIMILAR TO 'a{2,}'   -- ложь
'aa' SIMILAR TO 'a{2,}'  -- истина
'aaa' SIMILAR TO 'a{2,}' -- истина

Проверяет количество вхождений <regular primary> в строку от <low value> до <high value>: <regular primary> <открывающая фигурная скобка> <нижняя граница> <запятая> <верхняя граница> <закрывающая фигурная скобка>:

'' SIMILAR TO 'a{0,4}'      -- истина
'' SIMILAR TO 'a{2,4}'      -- ложь
'a' SIMILAR TO 'a{2,4}'     -- ложь
'aa' SIMILAR TO 'a{2,4}'    -- истина
'aaa' SIMILAR TO 'a{2,4}'   -- истина
'aaaa' SIMILAR TO 'a{2,4}'  -- истина
'aaaaa' SIMILAR TO 'a{2,4}' -- ложь

Проверяет наличие любого (непустого) символа: <символ подчеркивания>

'' SIMILAR TO '_'        -- ложь
'a' SIMILAR TO '_'       -- истина
'1' SIMILAR TO '_'       -- истина
'a1' SIMILAR TO '_'      -- ложь
'a1' SIMILAR TO '__'     -- истина
'a1#@' SIMILAR TO 'a_#_' -- истина

Проверяет наличие любой строки любой длины (включая пустую строку): <символ процент>

'' SIMILAR TO '%'        -- истина
'az' SIMILAR TO 'a%z'    -- истина
'a123z' SIMILAR TO 'a%z' -- истина
'azx' SIMILAR TO 'a%z'   -- ложь

Использование цельного регулярного выражения в качестве подвыражения: <открывающая круглая скобка> <regular expression> <закрывающая круглая скобка>

'ab' SIMILAR TO '(ab){2}'   -- ложь
'aabb' SIMILAR TO '(ab){2}' -- ложь
'abab' SIMILAR TO '(ab){2}' -- истина

Проверяет символ на соответствие одному из перечисления: <открывающая квадратная скобка> <перечисление символов> <закрывающая квадратная скобка>

'b' SIMILAR TO '[abc]' -- истина
'd' SIMILAR TO '[abc]' -- ложь
'9' SIMILAR TO '[0-9]' -- истина
'9' SIMILAR TO '[0-8]' -- ложь
'8' SIMILAR TO '[7-9]' -- истина
'8' SIMILAR TO '[9-7]' -- истина

Проверяет символ на отсутствие в перечислении: <открывающая квадратная скобка> <символ циркумфлекс> <перечисление символов> <закрывающая квадратная скобка>

'b' SIMILAR TO '[^abc]' -- ложь
'd' SIMILAR TO '[^abc]' -- истина

Проверяет символ на наличие в перечислении <перечисление включения>, но отсутствие в перечислении <перечисление исключения>: <открывающая квадратная скобка> <перечисление включения> <символ циркумфлекс> <перечисление исключения> <закрывающая квадратная скобка>

'b' SIMILAR TO '[abc^d]'       -- истина
'b' SIMILAR TO '[a-d^b]'       -- ложь
'b' SIMILAR TO '[abc^b]'       -- ложь
'3' SIMILAR TO '[[:DIGIT:]^3]' -- ложь
'4' SIMILAR TO '[[:DIGIT:]^3]' -- истина

Проверяет символ на принадлежность классу <идентификатор класса символа> (допустимые идентификаторы классов приведены в таблице 7.1); может быть использовано с символом циркумфлекс, чтобы инвертировать логику: <открывающая квадратная скобка> <символ двоеточие> <идентификатор класса символа> <символ двоеточие> <закрывающая квадратная скобка>

'4' SIMILAR TO '[[:DIGIT:]]'  -- истина
'a' SIMILAR TO '[[:DIGIT:]]'  -- ложь
'4' SIMILAR TO '[^[:DIGIT:]]' -- ложь
'a' SIMILAR TO '[^[:DIGIT:]]' -- истина

Пример использования специального символа <escape character>

'(' SIMILAR TO '#(' ESCAPE '#' -- истина
'#' SIMILAR TO '##' ESCAPE '#' -- истина
'#' SIMILAR TO '#' ESCAPE '#'  -- ошибка

Пример

CREATE TABLE department (
  NUMBER NUMERIC(3) NOT NULL,
  name VARCHAR(25) NOT NULL,
  phone VARCHAR(14)
  CHECK (phone SIMILAR TO '\([0-9]{3}\) [0-9]{3}\-[0-9]{4}' escape '\')
);
 
insert into department
  values ('000', 'Corporate Headquarters', '(408) 555-1234');
insert into department
  values ('100', 'Sales AND Marketing', '(415) 555-1234');
insert into department
  values ('140', 'FIELD Office: Canada', '(416) 677-1000');
insert into department
  values ('600', 'Engineering', '(408) 555-123'); -- нарушение условия check
 
select * from department
  where phone not similar to '\([0-9]{3}\) 555\-%' escape '\';

См. также

Источник

%Firebird%\doc\

firebird.doc.russian

Только авторизованные участники могут оставлять комментарии.
similar_to.txt · Последние изменения: 2016/01/30 20:18 — 46.39.231.114