На этом шаге мы рассмотрим организацию проверки на соответстве шаблону.
Продолжим рассматривать операторы сравнения.
Специальные символы могут быть расположены в любом месте шаблона. Например, чтобы найти все вхождения, необходимо указать символ % в начале и в конце шаблона:
Рис.1. Использование специальных символов
Можно установить привязку или только к началу строки, или только к концу:
Рис.2. Привязка к началу и к концу строки
Кроме того, шаблон для поиска может иметь очень сложную структуру:
Рис.3. Сложная структура шаблона
Обратите внимание на последнюю строку поиска. Этот пример демонстрирует, что специальный символ % соответствует не только любому количеству символов, но и полному их отсутствию.
Что же делать, если необходимо найти символы % и _? Ведь они являются специальными. В этом случае специальные символы необходимо экранировать с помощью символа, указанного в инструкции ESCAPE <Символ>:
Рис.4. Использование инструкции ESCAPE
Следует учитывать, что сравнение с шаблоном для латинских букв производится без учета регистра символов. Чтобы учитывался регистр, необходимо присвоить значение true (или 1, yes, on) параметру case_sensitive_like в SQL-команде PRAGMA. Пример:
Рис.5. Использование SQL-команды PRAGMA
Теперь посмотрим, учитывается ли регистр русских букв при поиске по шаблону:
Рис.6. Поиск с учетом регистра символов
Результат выполнения примера показывает, что поиск производится с учетом регистра символов.
В общем случае что поиск русских букв зависит от кодировки. По умолчанию в SQLite используется кодировка UTF-8. С помощью инструкции PRAGMA encoding = <Кодировка> можно указать другую кодировку. Поддерживаются кодировки UTF-8, UTF-16, UTF-16le и UTF-16be. В этот список не входят кодировки cp866 и Windows-1251, поэтому результат сравнения строк в этих кодировках может быть некорректным. В рабочих проектах данные желательно представлять в кодировке UTF-8.
Результат логического выражения можно изменить на противоположный. Для этого необходимо перед выражением разместить оператор NOT. Пример:
Рис.7. Смена результата на противоположный
Кроме того, допустимо проверять сразу несколько условий, указав между выражениями следующие операторы:
На следующем шаге мы рассмотрим индексы.