Функции для обработки строк

Опубликовал: Вторник, Апрель 24, 2012 в категории HTML | Пока нет комментариев

Перечислим основные функции для обработки строк:

? 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) — (Профессиональное программирование)

Add to Social Bookmarks
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • BobrDobr
  • Mr. Wong
  • Yandex.Bookmarks
  • Text 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Pisali
  • SMI 2
  • Moe Mesto
  • 100 Zakladok
  • Vaau!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - I.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>