Приднестровская поддержка XOOPS
Перечислим основные функции для обработки строк:
□ 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 */
Отправитель | Нити |
---|
1 пользователь(ей) активно (1 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 1 далее... |