Поиск
Строковые функции
Строковые функции возвращают NULL, если длина результата превысит значение системной переменной max_allowed_packet. Для функций, которые оперируют позициями в строке, нумерация позиций начинается с 1.
ASCII {строка). Возвращает числовое значение первого символа строки строка.
Возвращает 0, если строка является пустой. Возвращает NULL, если строка равна
NULL. ASCII () работает с символами в диапазоне кодов от 0 до 255.
mysql> SELECT ASCII('2');
-> 50 mysql> SELECT ASCII(2);
-> 50 mysql> SELECT ASCII('dx');
-> 100
См. также функцию ORD ().
ное целое (BIGINT). Это эквивалентно CONV(N, 10,2). Возвращает NULL, если N рав
но NULL.
mysql> SELECT BIN(12); -> ' 1100'
ВIT_LENGTH {строка). Возвращает длину строки строка в битах.
mysql> SELECT BIT _LENGTH('text'); -> 32
Функция BIT_LENGTH() была добавлена в MySQL 4.0.2.
щую из символов с кодами, заданными этими целыми. Значение NULL пропуска
ются.
mysql> SELECT CHAR(77,121,83,81, '76');
-> 'MySQL' raysql> SELECT CHAR(77,77.3,'77.3');
-> 'МММ'
Многобайтные символы считаются как один. Это значит, что для строки, состоя
щей из пяти двухбайтных символов, LENGTH() вернет 10, в то время как
CHAR_LENGTH ()-5.
CHARACTER_LENGTH () - ЭТО СИНОНИМ CHAR_LENGTH ().
MySQL был скомпилирован с библиотекой поддержки сжатия, такой как zlib. В
противном случае возвращаемым значением всегда будет NULL.
mysql> SELECT LENGTH(COMPRESS(REPEAT('a1,1000)));
-> 21 mysql> SELECT LENGTH(COMPRESS(")];
-> 0 mysql> SELECT LENGTH(COMPRESS( 'a'));
-> 13 mysql> SELECT LENGTH (COMPRESS (REPEAT ('a', 16))) ;
-> 15
Содержимое сжатой строки сохраняется следующим образом:
• Пустая строка сохраняется как пустая строка.
• Непустая строка сохраняется как четырехбайтовая длина несжатой строки
(младший байт идет первым), за которой следует сжатая строка. Если строка
завершается пробелом, добавляется дополнительный символ '.' во избежание
усечения завершающих пробелов, которое имеет место при сохранении в
столбцах CHAR или VARCHAR. (Использовать для сохранения сжатых строк
столбцы CHAR или VARCHAR не рекомендуется. Взамен лучше применять столб
цы BLOB.)
Функция COMPRESS () появилась в MySQL 4.1.1.
ных аргументов. Возвращает NULL, если любой из аргументов равен NULL. Прини
мает один или более аргументов. Числовой аргумент преобразуется в эквивалент
ную строковую форму.
mysql> SELECT CONCAT('My', 'S 'QL•);
-> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL mysql> SELECT CONCAT(14.3);
-> '14.3'
CONCAT_WS означает "Concat With Separator" ("CONCAT с разделителем") и представляет собой особую форму CONCAT (). Первый аргумент - это разделитель для остальных аргументов. Разделитель добавляется между соединяемыми строками. Разделитель может быть строкой, как и остальные аргументы. Если разделитель равен NULL, результат тоже равен NULL. Функция пропускает любые аргументы NULL после разделителя.
mysql> SELECT CONCAT_WS(',','First name1,'Second name','Last Name');
-> 'First name,Second name,Last Name' mysql> SELECT CONCAT_WS (',', 'First name', NULL,'Last Name');
-> 'First name,Last Name1
До версии MySQL 4.0.14 функция CONCAT_WS () пропускала пустые строки, так же как и значения NULL.
Конвертирует числа между разными системами счисления. Возвращает строковое представление числа N, преобразованное из системы счисления с основанием основ ание_ начальное в систему счисления с основанием основание_конечное. Возвращает NULL, если любой из аргументов равен NULL. Аргумент N интерпретируется как целое, но может указываться и как целое, и как строка. Минимальное основание системы счисления - 2, максимальное - 36. Если значение основа-ние_конечное отрицательное, N рассматривается как целое со знаком. В противном случае N считается беззнаковым целым. CONV() работаетс 64-разрядной точностью.
mysql> SELECT CONV( 'а',16,2);
-> '1010' mysql> SELECT CONV('6E' ,18, 8) ;
-> '172' mysql> SELECT CONV(-17,10,-18);
-> '-H' mysql> SELECT CONV(10+'10'+'10'+0xa,10,10);
-> 40'
Возвращает строка!, если N = 1, строка2, если N = 2, и так далее. Возвращает NULL, если Nменьше 1 или больше количества аргументов. ELT() - это дополнение field().
mysql> SELECT ELT(1, 'ej 'Heja', 'hej1, 'foo');
-> 'ej' mysql> SELECT ELT(4, 'ej', 'Heja1, 'hej1, 'foo1);
-> 'foo'
Возвращает строку, в которой для каждого установленного в 1 бита в аргументе биты возвращается строка вкл, а для каждого бита, установленного в 0, - строка выкл. Каждая строка отделяется разделителем разделитель (по умолчанию - ','), и используются только количество_бит бит (по умолчанию 64).
mysql> SELECT EXPORT__SET(5,fY','N',',',4)
-> Y,N,Y,N
аргумента строка в список строка19 строка2, строкаЗ, ... Возвращает 0, если вхо
ждение не найдено. FIELD () - это дополнение ELT ().
mysql> SELECT FIELD('еj', 'Hej 'ej1, 'Heja', 'hej1, 'foo');
-> 2 mysql> SELECT FIELD('fo f Hej 'ej', 'Heja1, 'hej1, 'foo');
-> 0
находится в списке строк список_строк, состоящего из N подстрок. Список строк -
это строка, состоящая из подстрок, разделенных символом ','. Если первый аргу
мент — константная строка, а второй - столбец типа SET, функция FIND_IN_SET ()
оптимизирована для использования битовой арифметики. Возвращает 0, если
строка не входит в списокстрок, или если список_строк — пустая строка. Воз
вращает NULL, если любой из аргументов равен NULL. Эта функция не работает
правильно, если первый аргумент содержит запятую.
mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2
Начиная с версии MySQL 4.0.1 и выше, если Ч_или_С — строка, то возвращается шестнадцатеричная строка ¥_или_С, в которой каждый символ преобразован в два шестнадцатеричных разряда.
mysql> SELECT HEX(255);
-> fFF' mysql> SELECT 0x616263;
-> 'abc' mysql> SELECT HEX('abc');
-> 616263
рой подстрока длиной длина, начинающаяся с позиции позиция, заменяется стро
кой новая_строка.
mysql> SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic'
Эта функция безопасна в отношении многобайтных наборов символов.
подстрока в строку строка. Это то же самое, что двух аргументная форма
LOCATE ( ), только аргументы переставлены местами.
mysql> SELECT INSTR('foobarbar', 'bar');
-> 4
mysql> SELECT INSTR('xbar', 'foobar'); -> 0
Эта функция безопасна в отношении многобайтных наборов символов. В MySQL 3.23 эта функция чувствительна к регистру. В 4.0 она чувствительна к регистру, только если любой аргументов является бинарной строкой.
ш LCASE(строка). Функция LCASE() - синоним для LOWER ().
mysql> SELECT LEFT(•foobarbar', 5); -> 'fooba1
волы считаются по количеству байт. Это значит, что для строки, содержащей пять
двухбайтных символов, LENGTH () вернет 10, в то время как CHAR_LENGTHО -5.
mysql> SELECT LENGTH('text');
Файл должен находиться на сервере и к нему должен указываться полный путь.
Кроме того, необходимо иметь привилегию FILE. Файл должен быть доступен по
чтению всем, и иметь размер менее max_allowed_packet байт.
Если файл не существует или не может быть прочитан, функция возвращает NULL.
mysql> UPDATE имя файла
SET столбец_Ыob=LOAD_FILE (' /tmp/picture') WHERE id=l;
До версии MySQL 3.23 вы должны были читать файл внутри приложения и создавать оператор INSERT для обновления базы данных содержимым файла. Если вы используете библиотеку MySQL++, единственный способ сделать это описан в руководстве по MySQL++, которое доступно по адресу http://dev.mysql.com/doc.
LOCATE(подстрока,строка, позиция)
Первый синтаксис возвращает позицию первого вхождения подстроки подстрока в строку строка. Второй синтаксис возвращает позицию первого вхождения подстроки подстрока в строку строка, начиная с позиции позиция. Если подстрока не входит в строку строка, возвращается 0.
mysql> SELECT LOCATE('bar', 'foobarbar');
-> 4 mysql> SELECT LOCATE('xbar', 'foobar');
-> 0 mysql> SELECT LOCATE('bar, 'foobarbar',5);
-> 7
Эта функция безопасна в отношении многобайтных наборов символов. В MySQL 3.23 эта функция чувствительна к регистру. В 4.0 она чувствительна к регистру, только если любой из аргументов является бинарной строкой.
нижнему регистру в соответствии с текущим набором символов (по умолчанию
ISO-8859-1 Latinl).
mysql> SELECT LOWER( 'QUADRATICALLY'); -> 'quadratically1
Функция безопасна в отношении многобайтных наборов символов.
ш LPAD{строка,длина, строка-заполнитель). Возвращает строку строка, добавив слева строкой строка-заполнитель до длины длина. Если строка длиннее, чем указано в аргументе длина, возвращается значение, усеченное до длина символов.mysql> SELECT LPAD('hi',4,'??');
mysql> SELECT LPAD('hi',1,'??'); -> 'h(
LTRIM { строка). Возвращает строку строка с удаленными ведущими пробелами.
mysql> SELECT LTRIM(' barbar'); -> 'barbar1
Функция безопасна в отношении многобайтных наборов символов.
MAke_set{биты,строка 1,строка2,...). Возвращает набор (строку, содержащую подстроки, разделенные запятой), состоящий из строк, которые имеют соответствующую установку битов в биты. При этом строка1 соответствует нулевому (по порядку) биту, строка2 - первому и так далее. Значения NULL в списке строка1, строка2, ... к результату не добавляются.
mysql> SELECT MAKEJSET(1, 'а','b','с1);
-> 'а' mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
-> 'hello,world' mysql> SELECT MAKE__SET(1 | 4,'hello','nice',NULL,'world');
-> 'hello' mysql> SELECT MAKE_SET(0, 'a','b','c');
-> ''
MID (строка, позиция, длина)
MID (строка, позиция, длина) -это синоним для SUBSTR (строка, позиция, длина).
ОСТ (N). Возвращает строковое представление восьмеричного значения N, где N-
длинное целое.
Это эквивалент CONV(N, 10, 8). Возвращает NULL, если N равно NULL.
mysql> SELECT ОСТ(12);
-> 'И'
OCTET_LENGTH(строка) OCTET _LENGTH () - ЭТО СИНОНИМ ДЛЯ LENGTH ().
ORD{строка). Если самый левый символ строки строка многобайтный, возвращается код этого символа, вычисленный из числовых значений байтов, из которых он состоит, с использованием формулы:
(код 1-го байта * 256) + (код 2-го байта * 2562) + (код 3-го байта * 2563)...
Если же самый левый символ строки строка не многобайтный, то ORD () возвращает то же значение, что и функция ascii ().
mysql> SELECT 0RD('2');
-> 50
POSITION {подстрока IN строка) -это синоним для LOCATE {подстрока, строка).
пользовать как допустимое значение в SQL-операторах. Строка окружается оди
нарными кавычками, а все вхождения в нее одинарной кавычки ("'"), обратной
косой черты ("")- ASCII NUL и Control-Z предваряются обратной косой чертой.
Если аргумент равен NULL, возвращается слово "NULL" без кавычек. Функция
QUOTE() появилась в версии MySQL 4.O.3.
mysql> SELECT QUOTE('Don't');
-> 'DonVt!' mysql> SELECT QUOTE(NULL);
-> NULL
повторенного количество раз. Если количество < 0, возвращается пустая строка.
Возвращает NULL, если строка или количество равно NULL.
mysql> SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL1
вхождения строка_с заменены на строка_в.
mysql> SELECT REPLACE('www.mysql.com', 'w1, 'Ww'); -> 'WwWwWw.mysql.com1
Функция безопасна в отношении многобайтных наборов символов.
mysql> SELECT REVERSE('abc'); -> 'cba1
Функция безопасна в отношении многобайтных наборов символов.
mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar'
Функция безопасна в отношении многобайтных наборов символов.
ную справа строкой строка-заполнитель до длины длина. Если строка длиннее,
чем длина, возвращается значение, усеченное до длина символов.
mysql> SELECT RPAD('hi',5,'??');
-> 'hi???' mysql> SELECT RPAD('hi',1,' ?') ;
-> 'h'
Функция безопасна в отношении многобайтных наборов символов.
mysql> SELECT RTRIM('barbar '); -> 'barbar'
Функция безопасна в отношении многобайтных наборов символов.
строка. Две строки, которые произносятся почти одинаково, должны иметь иден
тичные строки звучания. Стандартная строка звучания состоит из четырех симво
лов, однако функция SOUNDEX () возвращает строку любой длины. С помощью
функции SUBSTRING!), примененной к результату, можно получить стандартную
строку звучания. Все небуквенные символы игнорируются. Все интернациональ
ные символы вне диапазона A-Z, представляются гласными.
mysql> SELECT SOUNDEX('Hello');
-> 'H400' mysql> SELECT SOUNDEX('Quadratically');
-> 'Q36324'
На заметку!
Эта функция реализует оригинальный Soundex-алгоритм, а не более популярную расширенную версию (также описанную Дональдом Кнутом). Разница заключается в том, что оригинальная версия сначала удаляет гласные, а затем дубли, в то время как расширенная версия сначала убирает дубли, а затем гласные.
= SOUNDEX {выражение2). Доступно только в MySQL 4.1 и выше.
mysql> SELECT SPACE(6); -> '
SUBSTRING{строка FROM позиция)
SUBSTRING(строка,позиция,длина)
SUBSTRING{строка FROM позиция FOR длина)
Формы без аргумента длина возвращают подстроку строки строка, начиная с позиции позиция. Формы с аргументом длина возвращают подстроку строки строка длиной длина символов, начиная с позиции позиция. Формы, использующие FROM, представляют стандартный синтаксис SQL.
mysql> SELECT SUBSTRING('Quadratically',5);
-> 'ratically' mysql> SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar' mysql> SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
Функция безопасна в отношении многобайтных наборов символов.
строка до вхождения номер количество разделителя разделитель. Если значение
количество положительное, возвращается все, что лежит слева от финального раз
делителя (считая слева направо). Если значение количество отрицательное, возвра
щается все, что лежит справа от финального разделителя (считая справа налево).
mysql> SELECT SUBSTRINGJENDEX('www.mysql.com', '.', 2);
-> 'www.mysql' mysql> SELECT SUBSTRINGJENDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
Функция безопасна в отношении многобайтных наборов символов.
Возвращает строку строка с удаленными префиксами и/или суффиксами удаляе-
мая_строка. Если не указано ни BOTH, ни LEADING, ни TRAILING, подразумевается
BOTH. Если не указано удаляемая_ строка, удаляются пробелы.
mysql> SELECT TRIM(f bar ');
-> 'bar' mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
-> 'barxxx' raysql> SELECT TRIM(BOTH 'xf FROM 'xxxbarxxx1);
-> 'bar' mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
-> 'barx'
Функция безопасна в отношении многобайтных наборов символов.
UCASE() -синоним для UPPER().
COMPRESS (). Если аргумент не является упакованной строкой, возвращается null.
Функция требует, чтобы MySQL был скомпилирован с библиотекой сжатия, такой
как zlib. В противном случае возвращаемое значение всегда равно NULL.
mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
-> 'any string' mysql> SELECT UNCOMPRESS('any string');
-> NULL
Функция UNCOMPRESS() появилась в версии MySQL 4.1.1.
сжатием.
mysql> SELECT UNCOMPRESSED_LENGTH (COMPRESS (REPEAT ('a' ,30))) ;
-> 30
Функция UNCOMPRESSED_LENGTH П была добавлена в MySQL 4.1.1.
Выполняет действие, противоположное функции HEX {строка). То есть, интерпретирует каждую пару шестнадцатеричных цифр аргумента как число и преобразует в символ, представленный этим числом. Символы результата возвращаются в виде бинарной строки.
mysql> SELECT UNHEX('4D7953514C) ;
-> 'MySQL' mysql> SELECT 0x4D7953514C;
-> 'MySQL' raysql> SELECT UNHEX(HEX('string'));
-> 'string' mysql> SELECT HEX(UNHEX('1267' )) ;
-> '1267'
Функция UNHEX () появилась в версии MySQL 4.1.2.
162 Глава 5. Функции и операции
Возвращает строку строка, у которой все символы приведены к верхнему регистру в соответствии с текущим набором символов (по умолчанию ISO-8859-1 Latin1).
mysql> SELECT UPPER('Неj');
-> 'HEJ1
Функция безопасна в отношении многобайтных наборов символов.