Функции LOWER и UPPER
Функции LOWER и UPPER позволяют быстро и просто изменить регистр строки, чтобы символы отображались в нижнем (LOWER) или верхнем (UPPER) регистре. Эти функции поддерживаются во всех реализациях, описываемых в этой книге. Разные платформы, кроме того, поддерживают различные другие функции для форматирования текста, которые являются специфичными для конкретной реализации.
LOWER(строка) UPPER(строка)
Функция LOWER преобразует строку в нижний регистр, а функция UPPER, наоборот, в верхний.
Эти платформы поддерживают скалярные функции LOWER и UPPER стандарта SQL 2003, а также их синонимы UCASE и LCASE.
Oracle, PostgreSQL и SQL Server
Эти платформы поддерживают скалярные функции LOWER и UPPER стандарта SQL 2003, и это показано в приведенном ниже примере.
Пример
SELECT
LOWER(‘You Talkin To ME?’),
UPPER(‘you talking to me’);
you talkin to me?
YOU TALKING TO ME?!
Функция ОVERLAY вставляет одну строку в другую и возвращает результат.
OVERLAY(строка PLACING встраиваемая_строка FROM начало [FOR длина])
Если хотя бы один из входных параметров будет равен NULL, функция возвращает NULL, встраиваемая_строка заменяет количество символов, указываемое параметром длина, в указанной строке, начиная с начала. Если длина не указана, то встраиваемая строка заменит все символы, идущие в строке после начала.
DB2, MySQL, Oracle и SQL Server
Эти платформы не поддерживают функцию OVERLAY. Вы можете сымитировать действие этой функции на этих платформах при помощи комбинации функции SUBSTRING и оператора конкатенации.
Платформа PostgreSQL поддерживает для функции О VERLA Y стандарт ANSI. Примеры
Ниже приводится пример использования функции OVERLAY.
SELECT
OVERLAY(‘DONALD DUCK’ PLACING ‘TRUMP’ FROM 8)
FROM NAMES;
DONALD TRUMP
Функция SUBSTRING позволяет извлечь одну строку из другой.
SUBSTRING{строка_для_извлечения FROM начало [FOR длина] [COLLATE имя_сопоставления])
Если хотя бы один из входных параметров равен NULL, функция SUBSTRING возвращает NULL. Параметр строка_для_экстращии — это исходная строка, откуда нужно извлечь символьное значение. Это может быть строковая константа, столбец таблицы, относящийся к символьному типу, или переменная символьного типа. Параметр начало — это целочисленное значение, указывающее, с какой позиции нужно начинать извлечение. Необязательный параметр длина — это целочисленное значение, указывающее, сколько символов нужно извлечь, начиная с начала. Если дополнительное ключевое слово FOR опущено, то подстрока будет начинаться с начала и продолжаться до конца строки_для_извлечения.
SUBSTRING{строка_для_извлечения, начало [, длина])
Реализация данной функции в DB2, под названием SUBSTR, по большей части функционально эквивалентна стандартной функции SUBSTRING. Предложение COLLATE не поддерживается. Если параметр длина опущен, то возвращается оставшаяся часть строки (начиная с начала).
SUBSTRING(строка_для_извлечения FROM начало)
Реализация данной функции в MySQL подразумевает, что символы будут извлекаться с начала и извлечение будет продолжаться до конца строки.
SUBSTRING(строка_для_извлечения, начало [, длина])
Реализация данной функции в DB2, под названием SUBSTR, по большей части функционально эквивалентна стандартной функции SUBSTRING. Предложение COLLATE не поддерживается. Если параметр начало представляет собой отрицательное число, Oracle отсчитывает символы от конца строки_для_извлечения. Если параметр длина опущен, извлекается оставшаяся часть строки (от начала).
SUBSTRING{строка_для_извлвчения [FROM начало] [Р0Н длина])
Платформа PostgreSQL в основном поддерживает стандарт ANSI, за исключением того, что не поддерживается предложение COLLATE.
SUBSTRING{строка_для_извлечения [FROM начало] [Р0Н длина])
Платформа SQL Server в основном поддерживает стандарт ANSI, за исключением того, что не поддерживается предложение COLLATE. SQL Server позволяет использовать эту команду применительно к тексту, изображениям и двоичным типам данных, однако параметры начало и длина показывают здесь не количество символов, а количество байт.
Примеры
Эти примеры, как правило, будут работать на всех пяти описываемых в этой книге платформах. Только второй пример для Oracle, с отрицательным параметром начало, не будет выполняться на других платформах (конечно, нужно перевести ключевое слово Oracle SUBSTR в SUBSTRING).
/* Для Oracle, подсчет начинается слева */
SELECT
SUBSTR(‘ABCDEFG’, 3.4)
FROM DUAL;
Результат: ‘CDEF’
/* Для Oracle, подсчет начинается справа */
SELECT
SUBSTR(‘ABCDEFG’, -5.4)
FROM DUAL;
Результат: ‘CDEF’
/* Для MySQL */
SELECT
SUBSTRI, NG(‘Be vewy, vewy quiet’)
FROM 5
Результат: ‘wy, vewy quiet’
/* Для PostgreSQL или SQL Server */
SELECT
aujname.SUBSTRING(au_fname, 1. 1)
FROM authors
WHERE au_lname=’Carson’ Carson С
Функция TRIM удаляет из указанной символьной строки или значения типа BLOB первые символы, последние символы или и те и другие сразу. Также эта функция удаляет из указанной символьной строки и другие типы символов. По умолчанию функция удаляет указанный символ с обеих сторон символьной строки. Если удаляемый символ не указан, по умолчанию функция удаляет пробелы.
TRIM([[{LEADING | TRAILING | BOTH}] [удаляемый_символ] FROM] целевая_строка [COLLATE имя_сопоставления])
Параметр удачяемъш символ указывает символ, который нужно удалить, целе-вая_строка — это символьная строка, из которой нужно удалить символы. Если удаляемый символ не указан, функция TRIM удаляет пробелы. Функция COLLATE приводит результирующий набор данных функции в соответствие с существующим сопоставлением.
В DB2 есть функции LTRIM и RTRIM, которые удаляют первые или последние пробелы соответственно.
Эти платформы поддерживают синтаксис функции TRIM стандарта SQL 2003.
В SQL Server есть функции LTRIM и RTRIM, которые удаляют первые или последние пробелы соответственно. В SQL Server функции LTRIM и RTRIM не могут применяться для удаления других видов символов.
Примеры:
SELECT TRIM(‘ wamalamadingdong ‘);
» wamalamadingdong;
SELECT LTRIM(RTRIM(‘ wamalamadingdong ‘));
» wamalamadingdong
SELECT TRIM(LEADING ’19’ FROM ‘1976 AMC GREMLIN’);
» 76 AMC GREMLIN
SELECT TRIM(BOTH ‘x’ FROM ‘xxxWHISKEYxxx’);
» WHISKEY
SELECT TRIM(TRAILING ‘snack’ FROM ‘scooby snack’);
» scooby