Оператор like

Область применения:флажок Databricks SQL флажок Databricks Runtime

Возвращается true, если str совпадает с pattern и escape.

Синтаксис

str [ NOT ] like ( pattern [ ESCAPE escape ] )
str [ NOT ] like { ANY | SOME | ALL } ( [ pattern [, ...] ] )

Аргументы

  • str:STRING выражение.

  • pattern:STRING выражение.

  • escape: один символьный STRING литерал.

  • ANY, SOME или ALL:

    Область применения:флажок Databricks SQL флажок Databricks Runtime

    Если ALL указано, то [NOT] возвращает true, если str совпадает (или не совпадает) со всеми шаблонами. В противном случае или если указано ANY или SOME, то [NOT] возвращает true, если str совпадает (или не совпадает) хотя бы с одним шаблоном.

Возвраты

BOOLEAN.

pattern — это шаблон, строка, которая сравнивается по буквам, за исключением следующих специальных символов:

  • _ соответствует любому одному символу во входных данных (аналогично . в регулярных выражениях POSIX);
  • % соответствует нулю значений и более во входных данных (аналогично .* в регулярных выражениях POSIX).

По умолчанию в качестве escape-символа используется '\'. Если escape-символ предшествует специальному символу или другому escape-символу, следующий знак сопоставляется буквально. Недопустимо экранировать любые другие знаки.

При использовании литерала используйте raw-literal (r префикс) для предотвращения предварительной обработки символов escape-символа.

str NOT like ... эквивалентна NOT(str like ...).

Как определено стандартом SQL, LIKE всегда чувствительно к конечным пробелам, даже если колlation нечувствительна к конечным пробелам. Для ненулевого : всегда .

Применяется к:помечено как Databricks SQL помечено как Databricks Runtime 17.2 и более поздних версий

Следующие коллации поддерживаются LIKE:

  • UTF8_BINARY
  • UTF8_BINARY_RTRIM
  • UTF8_LCASE
  • UTF8_LCASE_RTRIM

Для других параметров сортировки используется contains, startswithили ends_with.

Примеры

> SELECT like('Spark', '_park');
true

> SELECT r'%SystemDrive%\Users\John' like r'%SystemDrive%\\Users%';
true

-- When not using raw literals, the escape character must be escaped.
> SELECT r'%SystemDrive%\Users\John' like '%SystemDrive%\\\\Users%';
true

> SELECT '%SystemDrive%/Users/John' like '/%SystemDrive/%//Users%' ESCAPE '/';
true

> SELECT like('Spock', '_park');
false

> SELECT 'Spark' like SOME ('_park', '_ock')
true

> SELECT 'Spark' like ALL ('_park', '_ock')
false

-- like is always trailing blank sensitive
> SELECT 'Spark' COLLATE UTF8_BINARY_RTRIM like 'Spark ';
false