Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

Строковые функции mySQL

Просмотров: 14444Комментарии: 0
Wordpress

ASCII (str)

Возвращает значение кода ASCII крайнего левого символа строки str. Возвращения 0, если str - пустая строка. Возвращает пустое значение (NULL), если str является пустой:

mysql> SELECT ASCII('2');
        -> 50
mysql> SELECT ASCII(2);
        -> 50
mysql> SELECT ASCII('dx');
        -> 100

ORD (str)

Функция подобна ASCII. Если крайний левый символ строки str - многобайтовый символ, возвращает код для того символа, рассчитанный в зависимости от значений кода ASCII составляющих его символов, используя эту формулу: ( (первый код ASCII байта) *256 + (второй код ASCII байта) ) [*256+третий код ASCII байта]. Если крайний левый символ - не многобайтовый символ, возвращает то же самое значение, что и функция ASCII ().

mysql> SELECT ORD('2');
        -> 50

CONV (N, from_base, to_base)

Конвертирует числа между различными основаниями. Возвращает строковое представление числа N, конвертированный с основания from_base в основание to_base. Возвращает пустой результат (NULL), если любой параметр является NULL (ПУСТЫМ). Параметр N интерпретируется как целое число, но может быть определен как строка. Минимальное основание - 2, максимальное основание - 36. Если to_base – отрицательное число, то N расценивается как число со знаком. Иначе, N расценивается как число без знака. Функция CONV работает с точностью на 64 бита:

mysql> SELECT CONV("a",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'

BIN(N)

Возвращает строковое представление двоичного значения N, где N имеет тип BIGINT. Эта функция эквивалентна следующему вызову функции CONV: CONV (N, 10,2). Возвращает пустое значение, если N является пустым значением (NULL):

mysql> SELECT BIN(12);
        -> '1100'

OCT(N)

Возвращает строковое представление восьмеричного значения N, где N имеет тип BIGINT. Это эквивалентно вызову CONV: CONV (N, 10,8). Возвращает пустое значение (NULL), если N является пустым (NULL):

mysql> SELECT OCT(12);
        -> '14'

HEX(N_or_S)

Если N_OR_S - число, возвращает строковое представление шестнадцатеричного значения N, где N имеет тип BIGINT. Это эквивалентно CONV (N, 10,16. Если N_OR_S - строка, возвращает шестнадцатеричную строку N_OR_S, где каждый символ в N_OR_S преобразован в 2 шестнадцатеричных цифры.

mysql> SELECT HEX(255);
        -> 'FF'
mysql> SELECT HEX("abc");
        -> 616263
mysql> SELECT 0x616263;
        -> "abc"

CHAR(N,...)

Функция CHAR интерпретирует параметры как целые числа и возвращает строку, состоящую из символов, каждый из которых представлен значениями кода ASCII заданных целых чисел. Пустые (NULL) входные значение параметров пропускаются

mysql> SELECT CHAR(77,121,83,81,'76');
        -> 'MySQL'
mysql> SELECT CHAR(77,77.3,'77.3');
        -> 'MMM'

CONCAT (str1, str2...)

Результат работы данной функции - объединение строк-параметров. Возвращает пустое значение (NULL), если любой параметр является пустым значением (NULL). Может иметь больше чем 2 параметра. Числовые параметры преобразуются в эквивалентную строковую форму:

mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
        -> NULL
mysql> SELECT CONCAT(14.3);
        -> '14.3'

CONCAT_WS(separator,str1,str2,...)

CONCAT_WS () - это, по сути, специальная форма CONCAT (). Функция производит объединение всех параметров, кроме первого, который используется как разделитель между остальными параметрами. Разделитель может быть строкой или числом. Если разделитель является пустым (NULL), результат будет ПУСТОЙ (NULL). Функция пропустит любые пустые параметры. Разделитель будет добавляться между строками, которые будут связаны:

mysql> SELECT CONCAT_WS(",","First name","Second name","Last Name");
       -> 'First name,Second name,Last Name'
mysql> SELECT CONCAT_WS(",","First name",NULL,"Last Name");
       -> 'First name,Last Name'

LENGTH(str), OCTET_LENGTH(str), CHAR_LENGTH(str), CHARACTER_LENGTH(str)

Возвращает длину строки str:

mysql> SELECT LENGTH('text');
        -> 4
mysql> SELECT OCTET_LENGTH('text');
        -> 4

BIT_LENGTH (str)

Возвращает длину строки str в битах:

mysql> SELECT BIT_LENGTH('text');
        -> 32

LOCATE(substr,str), POSITION(substr IN str)

Возвращает позицию первого вхождения подстроки substr в строку str. Возвращает 0, если подстрока substr не найдена:

mysql> SELECT LOCATE('bar', 'foobarbar');
        -> 4
mysql> SELECT LOCATE('xbar', 'foobar');
        -> 0

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр - двоичная строка. LOCATE(substr,str,pos)

Возвращает позицию первого вхождения подстроки substr в строку str, начиная с позиции pos. Возвращения 0, если substr подстрока не найдена:

mysql> SELECT LOCATE('bar', 'foobarbar',5);
        -> 7

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр - двоичная строка. INSTR (str, substr)

Возвращает позицию первого вхождения подстроки substr в строку str. Это то же самое, что и LOCATE () с двумя параметрами, за исключением того, что параметры меняются:

mysql> SELECT INSTR('foobarbar', 'bar');
        -> 4
mysql> SELECT INSTR('xbar', 'foobar');
        -> 0

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр - двоичная строка. LPAD(str,len,padstr)

Возвращает строку str, с пристыкованной слева строкой padstr. Если str более длинна, чем len, тогда результат будет обрезан до len символов

mysql> SELECT LPAD('hi',4,'??');
        -> '??hi'

RPAD(str,len,padstr)

Возвращает строку str, дополненную справа строкой padstr. Если str более длинна, чем len, тогда результат будет обрезан до len символов

mysql> SELECT RPAD('hi',5,'?');
        -> 'hi???'

LEFT(str,len)

Возвращает крайние len левых символов строки str:

mysql> SELECT LEFT('foobarbar', 5);
        -> 'fooba'

RIGHT(str,len)

Возвращает крайние len правых символов строки str:

mysql> SELECT RIGHT('foobarbar', 4);
        -> 'rbar'

SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len), MID(str,pos,len)

Возвращает подстроку строки str длиной len символов, начинающейся с позиции pos. Различная форма использования этой функции введена для совместимости с ANSI SQL92 синтаксисом:

mysql> SELECT SUBSTRING('Quadratically',5,6);
        -> 'ratica'

SUBSTRING(str,pos), SUBSTRING(str FROM pos)

Возвращает подстроку строки str,начинающуюся в позиции pos.

mysql> SELECT SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'

SUBSTRING_INDEX(str,delim,count)

Возвращает подстроку из строки str при count появлении разделителя delim. Если count положительное число, то возвращается все символы слева от последнего разделителя. Если count -отрицателен, то возвращается все символы справа от последнего разделителя:

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'

LTRIM (str)

Возвращает строку str с удаленными слева пробелами:

mysql> SELECT LTRIM('  barbar');
        -> 'barbar'

RTRIM (str)

Возвращает строку str с удаленными справа пробелами:

mysql> SELECT RTRIM('barbar   ');
        -> 'barbar'

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

Возвращает строку str со всеми remstr префиксами и/или прибавляет удаленный. Если ни один из спецификаторов BOTH | LEADING | TRAILING не указан, по умолчанию принимается BOTH. Если не определен параметр remstr, то он по умолчанию принимается равным пробелу.

mysql> SELECT TRIM('  bar   ');
        -> 'bar'
mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
        -> 'barxxx'
mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
        -> 'bar'
mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
        -> 'barx'

SOUNDEX (str)

Возвращает soundex строку для str. Две строки, которые кажутся почти тем же самым, должны иметь идентичные soundex строки. Стандартная soundex строка - 4 символа длины, но SOUNDEX (), функция возвращает строку произвольной длины. Все неалфавитно-цифровые символы игнорируются. Все международные алфавитные символы вне диапазона A-Z обработаны как гласные:

mysql> SELECT SOUNDEX('Hello');
        -> 'H400'
mysql> SELECT SOUNDEX('Quadratically');
        -> 'Q36324'

SPACE(N)

Возвращает строку, состоящую из N пробелов:

mysql> SELECT SPACE(6);
        -> '      '

REPLACE(str,from_str,to_str)

Возвращает строку str со всеми всеми возникновениями строки from_str замененный строкой to_str:

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

REPEAT(str,count)

Возвращает строку, состоящую из строки str, повторенной count раз. Если count <= 0, возвращает пустую строку. Возвращает пустое значение (NULL), если str или count являются пустыми (NULL):

mysql> SELECT REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL'

REVERSE(str)

Возвращает строку, представляющую собой строку str наоборот.

mysql> SELECT REVERSE('abc');
        -> 'cba'

INSERT(str,pos,len,newstr)

Возвращает строку str, с подстрокой, начинающейся в позиции pos и длиной len символов, замененных строкой newstr:

mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
        -> 'QuWhattic'

ELT(N,str1,str2,str3,...)

Возвращет str1, если N = 1, str2, если N = 2, и так далее. Возвращает пустое значение (NULL), если N меньше чем 1 или больше чем номер параметров. ELT() - дополнение для функции FIELD():

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
        -> 'ej'
mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');
        -> 'foo'

FIELD(str,str1,str2,str3,...)

Возвращает индекс str в str1, str2, str3... списке. Возвращения 0, если str не найден.

mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 2
mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 0

FIND_IN_SET (str, strlist)

Возвращает значение от 1 до N, если строка str находится в списке strlist состоящий из N подстрок. Строковый список - строка, составленная из подстрок, отделенных символами `,' . Если первый параметр - постоянная строка, и второй - столбец типа множество, функция FIND_IN_SET () будет использовать разрядную арифметику! Возвращается 0, если str не находится в strlist или если strlist - пустая строка. Возвращается NULL, если любой параметр является ПУСТЫМ (NULL). Эта функция не будет работать корректно, если первый параметр содержит символы `,'

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2

MAKE_SET (BITS, str1, str2...)

Возвращает набор (строка, содержащая подстроки, отделенные `,' символами), состоящий из строк, которые имеют соответствующие биты в наборе BITS. str1 соответствует биту 0, str2 к биту 1, и т.д. ПУСТЫЕ (NULL) строки в str1, str2... не добавляются к результату:

mysql> SELECT MAKE_SET(1,'a','b','c');
        -> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
        -> 'hello,world'
mysql> SELECT MAKE_SET(0,'a','b','c');
        -> ''

EXPORT_SET(bits,on,off,[separator,[number_of_bits]])

Возвращает строку, где для каждого множества битов в bits, вы получаете строку on, и для каждого бита сброса Вы получаете off строку. Каждая строка отделена separator (значение по умолчанию,'') и используется только number_of_bits (значение по умолчанию 64) битов:

mysql> SELECT EXPORT_SET(5,'Y','N',',',4)
        -> Y,N,Y,N

LCASE(str), LOWER(str)

Возвращает строку str со всеми символами, замененными на символы нижнего регистра согласно текущему отображению набора символов (значение по умолчанию - ISO-8859-1 Latin1):

mysql> SELECT LCASE('QUADRATICALLY');
        -> 'quadratically'

UCASE(str), UPPER(str)

Возвращает строку str со всеми символами, замененными на верхний регистр согласно текущему отображению набора символов (значение по умолчанию - ISO-8859-1 Latin1):

mysql> SELECT UCASE('Hej');
        -> 'HEJ'

LOAD_FILE (file_name)

Читает файл и возвращает содержание файла как строку. Файл должен быть на сервере, Вы должны определить полное имя пути к файлу, и Вы должны иметь привилегию на чтение file_name. Файл должен быть доступен для чтения всеми и быть меньшим чем, max_allowed_packet. Если файл не существует или не может читаться из-за одной из вышеупомянутых причин, функция возвращает NULL:

mysql> UPDATE tbl_name
           SET blob_column=LOAD_FILE("/tmp/picture")
           WHERE id=1;

Если Вы не используете MySQL Версию 3.23, Вы должны сделать чтение файла в вашем приложении и создать инструкцию INSERT, чтобы модифицировать базу данных с информацией файла. Один способ сделать это, если Вы используете MySQL ++ библиотека, может быть найден в http://www.mysql.com/documentation/mysql++/mysql++-examples.html.

QUOTE(str)

Добавляет символ <обратный слэш> (\) для того, чтобы выдать корректный результат.

mysql> SELECT QUOTE("Don't");
        -> 'Don\'t!'
mysql> SELECT QUOTE(NULL);
        -> NULL

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

Перевод оригинальной документации взятой на http://www.mysql.com

Перевод: © 2002 by Башкиров Александр http://www.alib.spb.ru