Съвети и трикове за програмиране на оператор LIKE - SQL програмиране

Съдържание

Полезността на клаузата LIKE идва от операторите за обобщение, които поддържа. Клаузата LIKE връща булевата стойност TRUE, ако сравнението открие съвпадение.

За да функционира клаузата LIKE, чувствителността към главни и малки букви на конкретна СУБД е много важна. Например Microsoft SQL Server е нечувствителен към малки и големи букви по подразбиране (въпреки че може да бъде конфигуриран да го прави). Така че SQL Server ще третира редовете DAD и dad като еднакви. От друга страна, платформата на Oracle е чувствителна към главни и малки букви и низовете DAD и dad ще бъдат различни тук. Ето един пример за по-добра илюстрация на тази точка.

Тази заявка за Microsoft SQL Server ще извлече записи от таблицата на авторите, където фамилното име (lname) е или „larson“, или „lars“, въпреки че търсенето е дефинирано с помощта на главни букви („LARS%“) в заявката. В Oracle тази заявка няма да намери фамилните имена „Larson“ или „Lars“, тъй като Oracle прави сравнение с малки и големи букви.

DB2 платформата поддържа синтаксиса на клаузата LIKE на ANSI SQL 2003. Поддържат се заместващи символи % и долна черта (_). Поддържат се последователности за анулиране.

DB2 платформата е чувствителна към главни и малки букви, така че изпълнението на клаузата LIKE тук е напълно чувствително към главни и малки букви. За да сравнявате винаги нечувствителни към регистъра стойности, използвайте функцията UPPER или TRANSLATE. В допълнение, DB2 неявно преобразува кодовата страница на шаблон на низ или екранираща последователност в кодова страница на израз, освен ако те не са посочени с клауза FOR BIT DATA.

Платформата MySQL поддържа ANSI синтаксиса за клаузата LIKE. Поддържат се заместващи знаци % и знак.долна черта (_). Клаузата ESCAPE също се поддържа.

Освен това MySQL поддържа специалните функции REGEXP и NOT RLIKE, използвани при валидиране на регулярен израз. MySQL след версия 3.23.4 не е чувствителен към главни и малки букви по подразбиране.

Платформата Oracle поддържа синтаксиса ANSI за клаузата LIKE. Поддържат се заместващи знаци % и долна черта (_). Клаузата ESCAPE също се поддържа. Синтаксисът за клаузата LIKE в Oracle е както следва.

LIKE4> низ_модел [ESCAPE escape_sequence]

Специфичните за Oracle синтактични елементи имат следните значения.

ХАРЕСВАМ

Използва се пълният набор от знаци UNICODE.

КАТО 2

Използва се UNICODE USC2 символен набор.

КАТО 4

Използва се UNICODE USC4 символен набор.

Тъй като платформата на Oracle е чувствителна към малки и главни букви, трябва да включите израз, string_pattern или и двете във функцията UPPER. В този случай винаги ще сравнявате това, от което се нуждаете.

PostgreSQL

Платформата PostgreSQL поддържа синтаксиса на клаузата ANSI LIKE. Поддържат се заместващи знаци % и долна черта (_). Поддържат се и последователности за анулиране.

PostgreSQL е чувствителен към главни и малки букви по подразбиране. За сравнение без разлика на главни и малки букви PostgreSQL предоставя ключовата дума ILIKE. Можете също да използвате оператора - като еквивалент на LIKE и -* като еквивалент на ILIKE, и !- и !-* като еквивалент на NOT LIKE и NOT ILIKE съответно. Това са всички разширения на стандарта ANSI, които съществуват в PostgreSQL.

Например следните заявки са функционално еквивалентни.

Тъй като тези примери използват малки букви, може да срещнете проблем, чувствителен към малки букви. Тоест искането водитърсете в низа '%ville' с малки букви и таблицата може да съдържа стойности с главни букви, които няма да бъдат включени в резултатите - 'BROWNSVILLE', 'NASHVILLE', 'HUNTSVILLE'. Този проблем може да бъде решен, както е показано в следния пример.

Преобразуване на стойности в главни букви

Направете сравнение без значение за главни и малки букви ИЗБЕРЕТЕ * ОТ автори КЪДЕ град

Трябва да сте наясно (въпреки че това е извън обхвата на тази книга), че PostgreSQL също поддържа POSIX регулярни изрази. Подробностите са дадени в описанието на платформата.

SQL сървър

Платформата SQL Server поддържа синтаксиса на клаузата ANSI LIKE. Поддържат се последователности за анулиране. Следните допълнителни оператори за обобщение също се поддържат.

[] - съответства на всяка стойност от посочения набор, например [abc], или диапазон, например [k-n].

[L] - съответства на всеки знак, който не е включен в посочения набор или диапазон.

Допълнителна информация по темата

Някои трикове при използване на оператора REVOKE в бази данни на различни платформи

Някои съвети за използване на израза MERGE в бази данни на различни платформи

Съвети за използване на командата UPDATE в бази данни на голямо разнообразие от платформи

Някои характеристики на използването на израза INSERT в бази данни на различни платформи