|
Программирование >> Программный интерфейс приложений
Стандарт ANSI языка SQL определяет II как оператор конкатенации строк, но в СУБД MySQL это оператор логического ИЛИ . Вы сильно удивитесь, если будете ожидать от оператора, приведенного ниже, конкатенации строк, а в результате получите 0: SELECT abc I def -> О Перед выполнением этой операции строки аЬс и def преобразуются в целые числа, а результат выполнения операции дает 0. Для выполнения конкатенации строк в MySQL используется функция CONCAT( аЬс , def ) . Таблица 2.16. Логические операторы Оператор Синтаксис Значение AND, & & а AND В, а && b Логическое пересечение; дает значение истина , если оба операнда имеют значение истина OR, М а OR В, а 11 b Логическое объединение; дает значение истина , если один из операндов имеет значение истина NOT, I NOTa, !а Логическое отрицание; дает значение истина , ес- ли операнд имеет значение ложь Побитовые операции, представленные в табл. 2.17, предназначены для выполнения операций побитового пересечения и объединения, в которых каждый бит результата рассматривается как логическое И или ИЛИ соответствующих битов операндов. Есть операции побитового сдвига влево и вправо. Побитовые операции выполняются с применением целых значений типа BIGINT (64 бит). Таблица 2.17. Побитовые операторы Оператор Синтаксис Значение
Операторы сравнения (табл. 2.18) включают операторы сравнения относительных значений и лексофафического порядка чисел и строк, операторы сравнения по шаблону и сравнения с пустыми значениями. Оператор <=> применяется только в СУБД MySQL. Этот оператор был впервые введен только в MySQL 3.23. Таблица 2.18. Операторы сравнения
В MySQL 3.23 появляется оператор BINARY, позволяюший преобразовать простую строку в двоичную. Это сделает такую строку чувствительной к регистру при выполнении операции сравнения. Обратите внимание на то, что если первый пример из примеров, приведенных ниже, не реагирует на регистр, то остальные два уже будут чувствительны к регистру: abc = Abe -> 1 BINARY abc = Abe -> 0 abc = BINARY Abc -> 0 Оператора, альтернативного оператору binary (not binary), не существует. И, если столбец предполагается использовать как в контекстах, чувствительных к регистру, так и наоборот, задайте тип столбца, который не будет реагировать на регистр, чтобы для сравнений, где необходимо иметь чувствительность к регистру, воспользоваться оператором binary. Операции всегда будут реагировать на регистр, если в них участвуют столбцы, объявленные двоичной строкой (типы char binary, varchar binary И blob). При сравнении таких данных их необходимо приводить к одному и тому же регистру с помощью операторов upper () или lower (): UPPER(col name) < UPPER( Smith ) LOWER(col name) < LOWER( Smith ) При выполнении операций сравнения строк, нечувствительных к регистру, очень вероятна ситуация, когда несколько символов в зависимости от набора символов будут рассмотрены как эквивалентные. Например, символы Е и Ё могут рассматриваться как подобные при выполнении операций сравнения и сортировки. Двоичные (чувствительные к регистру) операции сравнения производятся с учетом А5СП-значений этих символов. Проверка по образцу позволяет делать выборку значений, не определяя точно всего значения полностью. В СУБД MySQL это делается с помощью оператора like и щаблона % (все последовательности символов) или щаблона (любой один символ). СУБД MySQL также имеет проверку по образцу с помощью оператора regexp и расщиренного регулярного выражения, аналогичного тому, что имеется в ОС UNIX в программах grep, sed и vi. При проверке по щаблону можно воспользоваться одним из этих операторов, а не =. Для того чтобы инвертировать смысл проверки, воспользуйтесь операторами not like или not regexp. Два типа проверки по образцу различаются в двух важных аспектах. Оператор like не реагирует на регистр в том случае, если по крайней мере один из операндов является двоичной строкой. Оператор regexp чувствителен к регистру. Выборка по образцу в SQL работает тогда и только тогда, когда есть полное совпадение. Выборка по регулярным выражениям работает при совпадении щаблона где-либо в строке. Шаблоны, работающие с оператором like, могут содержать символы % и Например, по щаблону Frank% будет найдена любая строка, начинающаяся с Frank : В MySQL 3.23.4 оператор regexp не реагирует на регистр, если ни один из операторов не является двоичной строкой.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |