Функции для обработки строк
Перечислим основные функции для обработки строк:
? CHAR_LENGTH(<Строка>) и CHARACTER_LENGTH(<Строка>) возвращают ко- личество символов в строке. Функции корректно работают с многобайт- ными кодировками:
SELECT CHAR_LENGTH(‘String’);
/* Выведет: 6 */
SELECT CHARACTER_LENGTH(‘String’);
/* Выведет: 6 */
? LENGTH(<Строка>) также позволяет определить количество символов в строке. Однако эта функция некорректно работает с многобайтными ко- дировками, так как возвращает количество байтов:
SELECT LENGTH(‘String’);
/* Выведет: 6 */
? BIT_LENGTH(<Строка>) возвращает длину строки в битах:
SELECT BIT_LENGTH(‘String’);
/* Выведет: 48 */
? CONCAT(<Строка1>, <Строка2>, …, <СтрокаN>) объединяет все пара-
метры в одну строку:
SELECT CONCAT(‘string1′, ‘string2′, ‘string3′);
/* Выведет: string1string2string3 */
? CONCAT_WS(<Разделитель>, <Строка1>, …, <СтрокаN>) объединяет все параметры в одну строку через разделитель, заданный в параметре <Раз- делитель>:
SELECT CONCAT_WS(‘ - ‘, ‘string1′, ‘string2′, ‘string3′);
/* Выведет: string1 - string2 - string3 */
? TRIM([[<Откуда>] [<Символы для удаления>] FROM] <Строка>) удаляет из начала (и/или конца) строки символы, указанные в параметре <Символы для удаления>. Если параметр не указан, то удаляемыми символами яв- ляются пробелы. Необязательный параметр <Откуда> может принимать значения:
• BOTH — символы удаляются из начала и конца строки (по умолча-
нию);
• LEADING — только из начала строки;
• TRAILING — только из конца строки.
Например:
SELECT CONCAT("’", TRIM(‘ String ‘), "’");
/* Выведет: ‘String’ */
SELECT CONCAT("’", TRIM(LEADING FROM ‘ String ’), "’");
/* Выведет: ‘String ‘ */
SELECT CONCAT("’", TRIM(TRAILING FROM ‘ String ’), "’");
/* Выведет: ‘ String’ */
SELECT CONCAT("’", TRIM(BOTH ‘m’ FROM ‘mmmmStringmmmm’), "’");
/* Выведет: ‘String’ */
SELECT CONCAT("’", TRIM(TRAILING ‘ing’ FROM ‘Stringing’), "’");
/* Выведет: ‘Str’ */
SELECT CONCAT("’", TRIM(TRAILING ‘gn’ FROM ‘String’), "’");
/* Выведет: ‘String’ */
? LTRIM(<Строка>) удаляет пробелы в начале строки:
SELECT CONCAT("’", LTRIM(‘ String ‘), "’");
/* Выведет: ‘String ‘ */
? RTRIM(<Строка>) удаляет пробелы в конце строки:
SELECT CONCAT("’", RTRIM(‘ String ‘), "’");
/* Выведет: ‘ String’ */
? LOWER(<Строка>) и LCASE(<Строка>) переводят все символы в нижний регистр:
SELECT LOWER(‘STRING’);
/* Выведет: string */ SELECT LCASE(‘String’);
/* Выведет: string */
? UPPER(<Строка>) и UCASE(<Строка>) переводят все символы в верхний регистр:
SELECT UPPER(‘string’);
/* Выведет: STRING */ SELECT UCASE(‘String’);
/* Выведет: STRING */
? REVERSE(<Строка>) возвращает строку в обратном порядке:
SELECT REVERSE(‘string’);
/* Выведет: gnirts */
? LEFT(<Строка>, <Количество символов>) возвращает заданное количе-
ство крайних символов слева:
SELECT LEFT(‘string’, 2);
/* Выведет: st */
? RIGHT(<Строка>, <Количество символов>) возвращает заданное количе-
ство крайних символов справа:
SELECT RIGHT(‘string’, 2);
/* Выведет: ng */
? SUBSTRING(<Строка>, <Начальная позиция>, [<Длина>]),
SUBSTR(<Строка>, <Начальная позиция>, [<Длина>]) и MID(<Строка>,
<Начальная позиция>, [<Длина>]) позволяют получить подстроку за-
данной длины, начиная с позиции <Начальная позиция>. Если параметр
<Длина> не задан, то возвращаются все символы до конца строки:
SELECT SUBSTRING(‘string’, 2, 2);
/* Выведет: tr */
SELECT SUBSTR(‘string’, 2, 2);
/* Выведет: tr */
SELECT MID(‘string’, 2);
/* Выведет: tring */
Первые две функции имеют альтернативный синтаксис:
SELECT SUBSTRING(‘string’ FROM 2 FOR 3);
/* Выведет: tri */
SELECT SUBSTRING(‘string’ FROM 2);
/* Выведет: tring */
? LPAD(<Строка>, <Длина>, <Подстрока>) добавляет подстроку к исход-
ной строке слева, доводя общую длину строки до величины <Длина>:
SELECT LPAD(‘string’, 11, ‘mp’);
/* Выведет: mpmpmstring */
? RPAD(<Строка>, <Длина>, <Подстрока>) добавляет подстроку к исход-
ной строке справа, доводя общую длину строки до величины <Длина>:
SELECT RPAD(‘string’, 10, ‘mp’);
/* Выведет: stringmpmp */
? REPEAT(<Строка>, <Количество повторений>) возвращает строку, со-
держащую заданное количество повторений исходной строки:
SELECT REPEAT(‘str’, 3);
/* Выведет: strstrstr */
? SPACE(<Количество пробелов>) возвращает строку, состоящую из задан-
ного количества пробелов:
SELECT CONCAT("’", SPACE(3), ‘String’, "’");
/* Выведет: ‘ String’ */
? ELT(<Номер из списка>, <Строка1>, …, <СтрокаN>) позволяет полу- чить одну строку из списка параметров, номер которой задается первым параметром:
SELECT ELT(2, ‘string1′, ‘string2′, ‘string3′);
/* Выведет: string2 */
? ASCII(<Строка>) возвращает код ASCII первого символа строки:
SELECT ASCII(‘String’);
/* Выведет: 83 */
? ORD(<Строка>) дает возможность узнать код первого символа строки.
Корректно работает с многобайтными кодировками. Если первый сим-
вол — однобайтный, вернет то же значение, что и ASCII():
SELECT ORD(‘String’);
/* Выведет: 83 */
? CHAR(<ASCII-код1>, <ASCII-код2>, …, <ASCII-кодN>) возвращает строку, состоящую из последовательности символов, соответствующих ASCII-кодам:
SELECT CHAR(83, 116, 114, 105, 110, 103);
/* Выведет: String */
? INSTR(<Строка>, <Подстрока>) или POSITION(<Подстрока> IN <Стро- ка>) ищут подстроку в строке и возвращают позицию ее первого вхожде- ния. Если вхождение не найдено, то возвращается 0:
SELECT INSTR(‘string’, ‘st’);
/* Выведет: 1 */
SELECT POSITION(‘st’ IN ‘string’);
/* Выведет: 1 */
SELECT POSITION(‘pt’ IN ‘string’);
/* Выведет: 0 */
? LOCATE(<Подстрока>, <Строка>, [<Начальная позиция>]) возвращает позицию первого вхождения подстроки в строку, начиная с указанной начальной позиции. Если подстрока не найдена, то возвращается 0. Если начальная позиция не указана, то поиск производится с начала строки:
SELECT LOCATE(‘st’, ‘string_st’);
/* Выведет: 1 */
SELECT LOCATE(‘st’, ‘string_st’, 3);
/* Выведет: 8 */
? FIELD(<Исходная строка>, <Строка1>, …, <СтрокаN>) позволяет оп- ределить номер строки из списка <Строка1>, …, <СтрокаN>, которая совпадает с исходной строкой:
SELECT FIELD(‘st’, ‘string’, ‘st’, ‘st2′);
/* Выведет: 2 */
? FIND_IN_SET(<Исходная строка>, <Список строк через запятую>) воз- вращает номер строки из списка <Список строк через запятую>, которая совпадает с исходной строкой:
SELECT FIND_IN_SET(‘st’, ‘string,st,st2′);
/* Выведет: 2 */
? REPLACE(<Строка>, <Подстрока для замены>, <Новая подстрока>) про- изводит замену всех вхождений подстроки для замены на новую под- строку и возвращает результат:
SELECT REPLACE(‘Привет, Петя’, ‘Петя’, ‘Вася’);
/* Выведет: Привет, Вася */
? SUBSTRING_INDEX(<Строка>, <Подстрока>, <Номер вхождения>) находит N-е вхождение подстроки в строку, где N задается параметром <Номер вхо- ждения>, и возвращает часть строки, расположенную слева от подстроки:
SELECT SUBSTRING_INDEX(‘синий, красный, зеленый’, ‘,’, 1);
/* Выведет: синий */
SELECT SUBSTRING_INDEX(‘синий, красный, зеленый’, ‘,’, 2);
/* Выведет: синий, красный */
Если параметр <Номер вхождения> имеет отрицательное значение, то ищется N-е вхождение подстроки с конца строки и возвращается часть строки, расположенная справа от найденной подстроки:
SELECT CONCAT(‘"’, SUBSTRING_INDEX(‘синий, красный, зеленый’,
‘,’, -1), ‘"’);
/* Выведет: " зеленый" */
SELECT CONCAT(‘"’, SUBSTRING_INDEX(‘синий, красный, зеленый’,
‘,’, -2), ‘"’);
/* Выведет: " красный, зеленый" */
? INSERT(<Строка>, <Начальная позиция>, <Длина>, <Подстрока>) заме- няет фрагмент в строке с начальной позиции длиной <Длина> на значение параметра <Подстрока>:
SELECT INSERT(‘красный’, 6, 2, ‘ое’);
/* Выведет: красное */
SELECT INSERT(‘красный’, 6, 1, ‘ое’);
/* Выведет: красноей */
? QUOTE(<Строка>) экранирует все специальные символы в строке:
SELECT QUOTE("Д’Артаньян и три мушкетера");
/* Выведет: Д\’Артаньян и три мушкетера */
? UNHEX(<Строка>) переводит строку из шестнадцатеричных цифр в обыч- ную строку. Каждая пара символов в исходной строке воспринимается как шестнадцатеричное число, которое преобразуется в символ:
SELECT UNHEX(’537472696E67′);
/* Выведет: String */
? COMPRESS(<Строка>) архивирует строку. Сжатую строку следует хранить в полях, имеющих бинарный тип данных;
? UNCOMPRESS(<Строка>) разархивирует строку, сжатую функцией
COMPRESS();
? UNCOMPRESSED_LENGTH(<Строка>) позволяет узнать длину строки, кото-
рую она будет иметь после разархивирования:
SELECT UNCOMPRESSED_LENGTH(COMPRESS(‘Строка’));
/* Выведет: 6 */
? CHARSET(<Строка>) возвращает название кодировки для строки:
SET NAMES ‘cp866′;
SELECT CHARSET(‘Строка’);
/* Выведет: cp866 */
? COLLATION(<Строка>) возвращает порядок сортировки для строки:
SET NAMES ‘cp866′;
SELECT COLLATION(‘Строка’);
/* Выведет: cp866_general_ci */
? STRCMP(<Строка1>, <Строка2>) сравнивает две строки и возвращает:
• 0 — если строки идентичны;
• -1 — если <Строка1> больше <Строка2>;
• 1 — если <Строка1> меньше <Строка2>.
Например,
SELECT STRCMP(‘Строка’, ‘Строка’);
/* Выведет: 0 */
SELECT STRCMP(‘Строка1′, ‘Строка2′);
/* Выведет: -1 */
SELECT STRCMP(‘Строка2′, ‘Строка1′);
/* Выведет: 1 */
Сравнение строк чувствительно к регистру;
? LOAD_FILE(<Путь к файлу>) — возвращает содержимое файла в виде строки. Часто используется для заполнения бинарных полей. В качестве примера создадим текстовый файл с названием test.txt в папке C:\Apache2. Затем запишем в файл строку "Content". Теперь получим со- держимое файла с помощью функции LOAD_FILE():
SELECT LOAD_FILE(‘C:/Apache2/test.txt’);
/* Выведет: Content */
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)
Похожие посты:
- Вывод текста с отступом (0)
- Изменение фонового цвета строки при наведении на нее указателя мыши (0)
- Изменение вида элементов формы с помощью CSS (0)
- Справочник по встроенным фильтрам add Django (0)
- Красиво отформатированные страницы ошибок в Django (0)
- Расширение системы шаблонов Django (0)
- Удобочитаемость данных Django (0)