Mysql 4 строковые функции


Содержание

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

Обратите внимание, объединение произошло без разделения, что не очень читабельно. Давайте подправим наш запрос, чтобы между объединяемыми столбцами был пробел:

Как видите, пробел считается тоже аргументом и указывается через запятую. Если объединяемых столбцов было бы больше, то указывать каждый раз пробелы было бы нерационально. В этом случае можно было бы использовать строковую функцию CONCAT_WS(разделитель, str1,str2. ) , которая помещает разделитель между объединяемыми строками (разделитель указывается, как первый аргумент). Наш запрос тогда будет выглядеть так:

То есть три символа, начиная с первого, заменены тремя пробелами.

LPAD(str, len, dop_str) Возвращает строку str, дополненную слева строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы справа, а пустое пространство заполнялось бы точками:

Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов, то оно будет обрезано.

RPAD(str, len, dop_str) Возвращает строку str, дополненную справа строкой dop_str до длины len. Предположим, мы хотим, чтобы при выводе городов поставщиков они располагались бы слева, а пустое пространство заполнялось бы точками:

Обратите внимание, значение len ограничивает количество выводимых символов, т.е. если название города будет длиннее 15 символов, то оно будет обрезано.

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

Обратите внимание, необходимо указывать абсолютный путь к файлу.

Как уже упоминалось строковых функций гораздо больше, но даже некоторые рассмотренные здесь применяются крайне редко. Поэтому на этом закончим их рассмотрение и перейдем к более используемым функциям даты и времени.

Видеоуроки php + mysql

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

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

В этой лекции рассмотрим команды MySql, предназначенные для обработки строковых данных.

ASCII(строка)


ORD(строка)

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

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

ВIT_LENGTH(строка)

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

CHAR(iV. )

Интерпретирует аргументы как целые и возвращает строку, состоящую из символов с кодами, заданными этими целыми. Значение NULL пропускаются.

CHAR_LENGTH(строка)


CHARACTER_LENGTH(строка)

Возвращает длину строки строка, измеренную в символах. Многобайтные символы считаются как один. Это значит, что для строки, состоящей из пяти двухбайтных символов, LENGTH() вернет 10, в то время как CHAR_LENGTH(») вернет 5.

COMPRESS(строка_для_сжатия)

Сжимает строку. Эта функция требует, чтобы MySQL был скомпилирован с библиотекой поддержки сжатия, такой как zlib. В противном случае возвращаемым значением всегда будет NULL.

Содержимое сжатой строки сохраняется следующим образом:

  • Пустая строка сохраняется как пустая строка.
  • Непустая строка сохраняется как четырехбайтовая длина несжатой строки (младший байт идет первым), за которой следует сжатая строка. Если строка завершается пробелом, добавляется дополнительный символ ‘ . ‘ во избежание усечения завершающих пробелов, которое имеет место при сохранении в столбцах CHAR или VARCHAR. (Использовать для сохранения сжатых строк столбцы CHAR или VARCHAR не рекомендуется. Взамен лучше применять столбцы BLOB ).

CONCAT(строка1, строка2, . )

Возвращает строку, которая состоит из сцепленных аргументов. Возвращает NULL, если любой из аргументов равен NULL. Принимает один или более аргументов. Числовой аргумент преобразуется в эквивалентную строковую форму.

CONCAT_WS(разделитель, строка1, строка2, . )

CONCAT_WS означает «Concat With Separator» («CONCAT с разделителем») и представляет собой особую форму CONCAT(). Первый аргумент — это разделитель для остальных аргументов. Разделитель добавляется между соединяемыми строками. Разделитель может быть строкой, как и остальные аргументы. Если разделитель равен NULL, результат тоже равен NULL. Функция пропускает любые аргументы NULL после разделителя.

CONV(N, основание_начальное, основание_конечное)

Конвертирует числа между разными системами счисления. Возвращает строковое представление числа N, преобразованное из системы счисления с основанием основание_начальное в систему счисления с основанием основание_конечное. Возвращает NULL, если любой из аргументов равен NULL. Аргумент N интерпретируется как целое, но может указываться и как целое, и как строка. Минимальное основание системы счисления — 2, максимальное — 36. Если значение основание_конечное отрицательное, N рассматривается как целое со знаком. В противном случае N считается беззнаковым целым. CONV() работает с 64-разрядной точностью.

ELT(N, строка1, строка2, строкаЗ, . )

Возвращает строка1, если N = 1, строка2, если N = 2, и так далее. Возвращает NULL, если N меньше 1 или больше количества аргументов. ELT() — это дополнение FIELD().

FIELD(строка, строка1, строка2, строка3, . )

Возвращает позицию вхождения аргумента строка в список строка1, строка2, строка3, . Возвращает 0, если вхождение не найдено.

FIELD() — это дополнение ELT().

FIND_IN_SET(строка, список_строк)

Возвращает значение от 1 до N, если строка находится в списке строк список_строк, состоящего из N подстрок. Список строк — это строка, состоящая из подстрок, разделенных символом ‘,’ . Возвращает 0, если строка не входит в список строк, или если список_строк — пустая строка.

HEX(Ч_или_С)

Если Ч_или_С — число, возвращает строковое представление шестнадцатеричного значения N, где N — длинное целое ( BIGINT ). Это эквивалентно CONV(N,10,16).

Если Ч_или_С — строка, то возвращается шестнадцатеричная строка Ч_или_С, в которой каждый символ преобразован в два шестнадцатеричных разряда.

INSERT(строка, позиция, длина, новая_строка)

Возвращает строку строка, в которой подстрока длиной длина, начинающаяся с позиции позиция, заменяется строкой новая_строка.

INSTR(строка, подстрока)

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

LEFT(строка, длина)

Возвращает первые длина символов строки строка.

LENGTH(строка)

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

LOAD_FILE(имя_файла)

Читает файл и возвращает его содержимое в виде строки. Файл должен находиться на сервере и к нему должен указываться полный путь. Кроме того, необходимо иметь привилегию FILE. Файл должен быть доступен по чтению всем, и иметь размер менее max_allowed_packet байт.

Если файл не существует или не может быть прочитан, функция возвращает NULL.

LOCATE(подстрока, строка)


LOCATE(подстрока, строка, позиция)


POSITION(подстрока IN строка)

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

LOWER(строка)


LCASE(строка)

Возвращает строку строка, в которой все символы приведены к нижнему регистру в соответствии с текущим набором символов.

LPAD(строка, длина, строка-заполнитель).

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

LTRIM(строка)

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

Возвращает строковое представление восьмеричного значения N, где N — длинное целое.

Это эквивалент CONV(N,10,8).

Возвращает NULL, если N равно NULL.

QUOTE(строка)

Заключает строку в кавычки, чтобы результат можно было использовать как допустимое значение в SQL-операторах. Строка окружается одинарными кавычками, а все вхождения в нее одинарной кавычки — обратной косой чертой («\»).

REPEAT(строка, количество)

Возвращает строку, состоящую из аргумента строка, повторенного количество раз.

REPLACE(строка, строка_2, строка_3)

Возвращает строку строка, в которой все вхождения строка_2 заменены на строка_3.


REVERSE(строка)

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

RIGHT(строка, длина)

Возвращает длина правых символов строки строка.

RPAD(строка, длина, строка-заполнитель)

Возвращает строку строка, дополненную справа строкой строка-заполнитель до длины длина. Если строка длиннее, чем длина, возвращается значение, усеченное до длина символов.

RTRIM(строка)

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

SOUNDEX(строка)

Возвращает строку, описывающую звучание ( soundex ) строки строка. Две строки, которые произносятся почти одинаково, должны иметь идентичные строки звучания.

SPACE(N)

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

SUBSTRING(строка, позиция)


SUBSTRING(строка FROM позиция)


SUBSTRING(строка, позиция, длина)


SUBSTRING(строка FROM позиция FOR длина)

Формы без аргумента длина возвращают подстроку строки строка, начиная с позиции позиция. Формы с аргументом длина возвращают подстроку строки строка длиной длина символов, начиная с позиции позиция. Формы, использующие FROM, представляют стандартный синтаксис SQL.

SUBSTRING_INDEX(строка, разделитель, количество)

Возвращает подстроку строки строка до вхождения номер количество разделителя разделитель. Если значение количество положительное, возвращается все, что лежит слева от финального разделителя (считая слева направо). Если значение количество отрицательное, возвращается все, что лежит справа от финального разделителя (считая справа налево).

TRIM([[BOTH | LEADING | TRAILING] [удаляемая_строка] FROM] строка)

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

UNCOMPRESS(строка_для_распаковки)

Распаковывает строку, сжатую функцией COMPRESS(). Если аргумент не является упакованной строкой, возвращается NULL.

UNHEX(строка)

Выполняет действие, противоположное функции HEX(строка). То есть, интерпретирует каждую пару шестнадцатеричных цифр аргумента как число и преобразует в символ, представленный этим числом. Символы результата возвращаются в виде бинарной строки.

UPPER(строка)


UCASE(строка)

Возвращает строку строка, у которой все символы приведены к верхнему регистру в соответствии с текущим набором символов.

Веб-библиотека

Поиск

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

Строковые функции возвращают 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’);

См. также функцию ORD ().

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

mysql> SELECT BIN(12) ; -> ‘ 1100’

mysql> SELECT BIT _LENGTH(‘text’); -> 32

Функция BIT_LENGTH() была добавлена в MySQL 4.0.2.

CHAR (iV. ). Интерпретирует аргументы как целые и возвращает строку, состоя
щую из символов с кодами, заданными этими целыми. Значение NULL пропуска
ются.

mysql> SELECT CHAR(77,121,83,81, ’76’) ;

-> ‘MySQL’ raysql> SELECT CHAR(77,77.3,’77.3′);

CHAR_LENGTH< строка). Возвращает длину строки строка, измеренную в символах.
Многобайтные символы считаются как один. Это значит, что для строки, состоя
щей из пяти двухбайтных символов, LENGTH() вернет 10, в то время как
CHAR_LENGTH ()-5.

CHARACTER_ L ENGTH (строка)
CHARACTER_LENGTH () — ЭТО СИНОНИМ CHAR_LENGTH ().

COMPRESS <строка_для_сжатия). Сжимает строку. Эта функция требует, чтобы
MySQL был скомпилирован с библиотекой поддержки сжатия, такой как zlib. В
противном случае возвращаемым значением всегда будет NULL.

mysql> SELECT LENGTH(COMPRESS(REPEAT(‘a 1 ,1000)));

-> 21 mysql> SELECT LENGTH(COMPRESS(«)];

-> 0 mysql> SELECT LENGTH(COMPRESS( ‘a’));

-> 13 mysql> SELECT LENGTH (COMPRESS (REPEAT (‘a’, 16))) ;

Содержимое сжатой строки сохраняется следующим образом:

• Пустая строка сохраняется как пустая строка.

• Непустая строка сохраняется как четырехбайтовая длина несжатой строки
(младший байт идет первым), за которой следует сжатая строка. Если строка
завершается пробелом, добавляется дополнительный символ ‘.’ во избежание
усечения завершающих пробелов, которое имеет место при сохранении в
столбцах CHAR или VARCHAR. (Использовать для сохранения сжатых строк
столбцы CHAR или VARCHAR не рекомендуется. Взамен лучше применять столб
цы BLOB.)

Функция COMPRESS () появилась в MySQL 4.1.1.

CONCAT<строка1,строка2, . ). Возвращает строку, которая состоит из сцеплен
ных аргументов. Возвращает NULL, если любой из аргументов равен NULL. Прини
мает один или более аргументов. Числовой аргумент преобразуется в эквивалент
ную строковую форму.

mysql> SELECT CONCAT(‘My’, ‘S ‘QL • );

-> ‘MySQL’ mysql> SELECT CONCAT(‘My’, NULL, ‘QL’);

-> NULL mysql> SELECT CONCAT(14.3) ;

CONCAT_WS означает «Concat With Separator» («CONCAT с разделителем») и представляет собой особую форму CONCAT (). Первый аргумент — это разделитель для остальных аргументов. Разделитель добавляется между соединяемыми строками. Разделитель может быть строкой, как и остальные аргументы. Если разделитель равен NULL, результат тоже равен NULL. Функция пропускает любые аргументы NULL после разделителя.

mysql> SELECT CONCAT_WS(‘,’,’First name 1 ,’Second name’,’Last Name’);

-> ‘First name,Second name,Last Name’ mysql> SELECT CONCAT_WS (‘,’, ‘First name’, NULL,’Last Name’);

-> ‘First name,Last Name 1

До версии 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) ;

Возвращает строка!, если N = 1, строка2, если N = 2, и так далее. Возвращает NULL, если Nменьше 1 или больше количества аргументов. ELT() — это дополнение field().

mysql> SELECT ELT(1, ‘ej ‘Heja’, ‘hej 1 , ‘foo’);

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


Возвращает строку, в которой для каждого установленного в 1 бита в аргументе биты возвращается строка вкл, а для каждого бита, установленного в 0, — строка выкл. Каждая строка отделяется разделителем разделитель (по умолчанию — ‘,’), и используются только количество_бит бит (по умолчанию 64).

mysql> SELECT EXPORT__SET(5 , f Y’ , ‘N’ ,’,’ ,4)

FIELD <строка, строка 1, строка2, строкаЗ. ). Возвращает позицию вхождения
аргумента строка в список строка1 9 строка2, строкаЗ, . Возвращает 0, если вхо
ждение не найдено. FIELD () — это дополнение ELT ().

mysql> SELECT FIELD(‘еj’, ‘Hej ‘ej 1 , ‘Heja’ , ‘hej1, ‘foo’);

-> 2 mysql> SELECT FIELD(‘fo f Hej ‘ej’, ‘Heja 1 , ‘hej 1 , ‘foo’);

find_in_set <строка, список_строк). Возвращает значение от 1 до N, если строка
находится в списке строк список_строк, состоящего из 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) ;

-> f FF’ mysql> SELECT 0x616263;

-> ‘abc’ mysql> SELECT HEX(‘abc’);

INSERT <строка, позиция, длина, новая_строка). Возвращает строку строка, в кото
рой подстрока длиной длина, начинающаяся с позиции позиция, заменяется стро
кой новая_строка.

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

Эта функция безопасна в отношении многобайтных наборов символов.

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

mysql> SELECT INSTR(‘foobarbar ‘, ‘bar’);

mysql> SELECT INSTR(‘xbar’, ‘foobar’); -> 0

Эта функция безопасна в отношении многобайтных наборов символов. В MySQL 3.23 эта функция чувствительна к регистру. В 4.0 она чувствительна к регистру, только если любой аргументов является бинарной строкой.

ш LCASE(строка). Функция LCASE() — синоним для LOWER ().

mysql> SELECT LEFT( • foobarbar ‘, 5); -> ‘fooba 1

ЬЕЫСТЩстрока>. Возвращает длину строки строка в байтах. Многобайтные сим
волы считаются по количеству байт. Это значит, что для строки, содержащей пять
двухбайтных символов, LENGTH () вернет 10, в то время как CHAR_LENGTHО -5.

mysql> SELECT LENGTH(‘text ‘);

LOAD_FI1E (шя_файла). Читает файл и возвращает его содержимое в виде строки.
Файл должен находиться на сервере и к нему должен указываться полный путь.
Кроме того, необходимо иметь привилегию FILE. Файл должен быть доступен по
чтению всем, и иметь размер менее max_allowed_packet байт.

Если файл не существует или не может быть прочитан, функция возвращает NULL.

mysql> UPDATE имя файла

SET столбец_Ыob=LOAD_FILE (‘ /tmp/picture’) WHERE >

До версии MySQL 3.23 вы должны были читать файл внутри приложения и создавать оператор INSERT для обновления базы данных содержимым файла. Если вы используете библиотеку MySQL++, единственный способ сделать это описан в руководстве по MySQL++, которое доступно по адресу http://dev.mysql.com/doc.

LOCATE (подстрока, строка)
LOCATE (подстрока,строка, позиция)

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

mysql> SELECT LOCATE(‘bar’, ‘ f oobarbar ‘);

-> 4 mysql> SELECT LOCATE(‘xbar’, ‘foobar’);

-> 0 mysql> SELECT LOCATE(‘bar , ‘foobarbar’,5);

Эта функция безопасна в отношении многобайтных наборов символов. В MySQL 3.23 эта функция чувствительна к регистру. В 4.0 она чувствительна к регистру, только если любой из аргументов является бинарной строкой.

LOWER<строка). Возвращает строку строка, в которой все символы приведены к
нижнему регистру в соответствии с текущим набором символов (по умолчанию
ISO-8859-1 Latinl).

mysql> SELECT LOWER( ‘QUADRATICALLY’); -> ‘quadratically 1

Функция безопасна в отношении многобайтных наборов символов.

mysql> SELECT LPAD(‘hi’,4,’??’ );

mysql> SELECT LPAD(‘hi’,1, ‘??’); -> ‘h (

mysql> SELECT LTRIM(‘ barbar’); -> ‘barbar 1

Функция безопасна в отношении многобайтных наборов символов.

mysql> SELECT MAKE J SET(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 ().

(код 1-го байта * 256) + (код 2-го байта * 256 2 ) + (код 3-го байта * 256 3 ).

Если же самый левый символ строки строка не многобайтный, то ORD () возвращает то же значение, что и функция ascii ().

mysql> SELECT 0RD(‘2’);

QUOTE <строка) . Заключает строку в кавычки, чтобы результат можно было ис
пользовать как допустимое значение в SQL-операторах. Строка окружается оди
нарными кавычками, а все вхождения в нее одинарной кавычки («‘»), обратной
косой черты («») — ASCII NUL и Control-Z предваряются обратной косой чертой.
Если аргумент равен NULL, возвращается слово «NULL» без кавычек. Функция
QUOTE() появилась в версии MySQL 4.O.3.

mysql> SELECT QUOTE(‘Don’t’ );

-> ‘DonVt!’ mysql> SELECT QUOTE(NULL);

REPEAT <строка, количество) . Возвращает строку, состоящую из аргумента строка,
повторенного количество раз. Если количество возвращается пустая строка.
Возвращает NULL, если строка или количество равно NULL.

mysql> SELECT REPEAT(‘MySQL’ , 3); -> ‘MySQLMySQLMySQL 1

mysql> SELECT REPLACE(‘www.mysql.com’ , ‘w1, ‘Ww’); -> ‘WwWwWw.mysql.com 1

Функция безопасна в отношении многобайтных наборов символов.

mysql> SELECT REVERSE(‘abc’); -> ‘cba 1

Функция безопасна в отношении многобайтных наборов символов.

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

Функция безопасна в отношении многобайтных наборов символов.

RPAD <строка, длина, строка-заполнитель) . Возвращает строку строка, дополнен
ную справа строкой строка-заполнитель до длины длина. Если строка длиннее,
чем длина, возвращается значение, усеченное до длина символов.

mysql> SELECT RPAD ( ‘hi’,5,’??’) ;

-> ‘hi. ‘ mysql> SELECT RPAD(‘hi’ ,1,’ ?’ ) ;

Функция безопасна в отношении многобайтных наборов символов.


mysql> SELECT RTRIM(‘barbar ‘); -> ‘barbar’

Функция безопасна в отношении многобайтных наборов символов.

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

mysql> SELECT SOUNDEX(‘Hello’ );

-> ‘H400’ mysql> SELECT SOUNDEX(‘Quadratically’) ;

Эта функция реализует оригинальный Soundex-алгоритм, а не более популярную расширенную версию (также описанную Дональдом Кнутом). Разница заключается в том, что оригинальная версия сначала удаляет гласные, а затем дубли, в то время как расширенная версия сначала убирает дубли, а затем гласные.

mysql> SELECT SPACE(6); -> ‘

Формы без аргумента длина возвращают подстроку строки строка, начиная с позиции позиция. Формы с аргументом длина возвращают подстроку строки строка длиной длина символов, начиная с позиции позиция. Формы, использующие FROM, представляют стандартный синтаксис SQL.

mysql> SELECT SUBSTRING(‘Quadratically’,5) ;

-> ‘ratically’ mysql> SELECT SUBSTRING(‘foobarbar’ FROM 4) ;

-> ‘barbar’ mysql> SELECT SUBSTRING(‘Quadratically’,5,6) ;

Функция безопасна в отношении многобайтных наборов символов.

SUBSTRING_INDEX <строка,разделитель, количество). Возвращает подстроку строки
строка до вхождения номер количество разделителя разделитель. Если значение
количество положительное, возвращается все, что лежит слева от финального раз
делителя (считая слева направо). Если значение количество отрицательное, возвра
щается все, что лежит справа от финального разделителя (считая справа налево).

mysql> SELECT SUBSTRING J ENDEX(‘www.mysql.com’ , ‘.’, 2) ;

-> ‘www.mysql’ mysql> SELECT SUBSTRING J ENDEX(‘www.mysql.com’ , ‘.’, -2);

Функция безопасна в отношении многобайтных наборов символов.

ТММШВОГН | LEADING | TRAILING] [удаляемая_строка] FROM] строка)
Возвращает строку строка с удаленными префиксами и/или суффиксами удаляе-
мая_строка. Если не указано ни BOTH, ни LEADING, ни TRAILING, подразумевается
BOTH. Если не указано удаляемая_ строка, удаляются пробелы.

mysql> SELECT TRIM(f bar ‘);

-> ‘bar’ mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxbarxxx’) ;

-> ‘barxxx’ raysql> SELECT TRIM(BOTH ‘x f FROM ‘xxxbarxxx 1 );

-> ‘bar’ mysql> SELECT TRIM(TRAILING ‘xyz’ FROM ‘barxxyz’);

Функция безопасна в отношении многобайтных наборов символов.

UCASE() -синоним для UPPER().

UNCOMPRESS <строка_для_распаковки). Распаковывает строку, сжатую функцией
COMPRESS (). Если аргумент не является упакованной строкой, возвращается null.
Функция требует, чтобы MySQL был скомпилирован с библиотекой сжатия, такой
как zlib. В противном случае возвращаемое значение всегда равно NULL.

mysql> SELECT UNCOMPRESS(COMPRESS(‘any string’));

-> ‘any string’ mysql> SELECT UNCOMPRESS(‘any string’);

Функция UNCOMPRESS() появилась в версии MySQL 4.1.1.

mysql> SELECT UNCOMPRESSED_LENGTH (COMPRESS (REPEAT (‘a’ ,30) )) ;

Функция UNCOMPRESSED_LENGTH П была добавлена в MySQL 4.1.1.

mysql> SELECT UNHEX(‘4D7953514C ) ;

-> ‘MySQL’ mysql> SELECT 0x4D7953514C;

-> ‘MySQL’ raysql> SELECT UNHEX(HEX(‘string’) );

-> ‘string’ mysql> SELECT HEX(UNHEX(‘1267’ )) ;

Функция UNHEX () появилась в версии MySQL 4.1.2.

162 Глава 5. Функции и операции

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

mysql> SELECT UPPER(‘Неj’);

Функция безопасна в отношении многобайтных наборов символов.

PHP Скрипты

  • Бесплатные web шаблоны
  • Иконки
  • Векторная графика

Фотоателье харьков срочное фото харьков iprintu.com.ua.

Поиск по Сайту

Партнеры

Самоучитель. Книги.

  • PHP для начинающих
  • Cимволы HTML
  • MySQL: Уроки, руководство
  • cPanel
  • Список кодировок

Статистика

Урок 6.6: Строковые функции в MySQL

Строковые функции возвращают NULL, если длина результата большая, чем параметр сервера max_allowed_packet.

Для функций, которые оперируют позициями в строке, первая позиция всегда пронумерована как 1, а не 0.

ASCII(str)

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

mysql> select ASCII(«2»);
-> 50.
mysql> select ASCII(2);
->50
mysql> select ASCII(«dx»);
-> 100

ORD(str)

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

(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 C0NV(-17,10,-18);
-> «-H»
mysql> select CONV(10+»10″+’10’+0xa,10,10);
-> «40»

BIN(N)

Возвращает строковое представление двоичного значения N, где N представляет собой число типа longlong (BIGINT). Это эквивалентно CONV(N,10,2). Возвращает NULL, если N равно NULL:

OCT(N)

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

mysql> select OCT(12);
-> «14»


HEX(N)

Возвращает строковое представление шестнадцатеричного значения N, где N представляет собой число типа longlong (BIGINT). Это эквивалентно CONV (N,10,16). Возвращает NULL, если N равно NULL:

mysql> select НЕХ(255);
-> «FF»

CHAR(N,. . .).

CHAR() интерпретируют параметры как целые числа и возвращает строку, состоящую из символов, заданных значениями ASCII-кодов из тех целых чисел. Значения NULL будут пропущены:

mysql> select CHAR(77,121,83,81,’76’);
-> «MySQL»
mysql> select CHAR(77,77.3,’77.3′);
-> «МММ»

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 With Separator (слияние с разделителем) и представляет собой специальную форму функции 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

Обратите внимание, что для CHAR_LENGTH() любой многобайтный символ считается одним.

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

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

mysql> select LOCATE(«bar», «foobarbar»);
-> 4
mysql> select LOCATE(«xbar», «foobar»);
-> 0

Поддерживаются многобайтные символы.

LOCATE(substr,str,pos).

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

mysql> select LOCATE(«bar», «foobarbar»,5);
-> 7

Поддерживаются многобайтные символы.

INSTR(str,substr)

Аналог LOCATE(), но с переставленными параметрами:

mysql> select INSTR(«foobarbar», «bar»);
-> 4
mysql> select INSTR(«xbar», «foobar»);
-> 0

Поддерживаются многобайтные символы.

LPAD(str,len,padstr)

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

RPAD (str,len,padstr)

Аналогично LPAD(str,len,padstr), но строка padstr приписывается справа.

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)

Возвращает подстроку длиной в len символов из строки str, начиная с позиции pos. Иная форма, которая использует синтаксис FROM из 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, будут удалены пробелы. Параметр LEADING определяет префиксы, TRAILING суффиксы, a BOTH все сразу:

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() возвращает произвольно длинную строку. Вы можете использовать SUBSTRING() на результате, чтобы получить стандартную soundex-строку. Все не алфавитно-цифровые символы игнорируются в данной строке. Все международные алфавитные символы вне диапазона A-Z обрабатываются как гласные:

mysql> select SOUNDEX(«Hello»);
-> «H400»
mysql> select SOUNDEX(«Quadratically»);
-> «Q36324»

SPACE(N)

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

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 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 не найдена. FIELD() дополняет функцию ELT():

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 подстрок. Список строк представляет собой строку, составленную из подстрок, отделяемых символом запятой (,).

Если первый параметр представляет собой постоянную строку, а второй столбец типа SET, то функция 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,’а’,’b’,’с’);
-> «а»
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]])

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

mysql> select EXPORT_SET(5,’У’,’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 (привилегии будут рассмотрены позже, пока вам достаточно знать лишь то, что такая привилегия необходима для работы с этой функцией). Файл должен быть читаем всеми и быть меньше, чем max_allowed_packet. Если файла не существует или он не читается по одной из вышеупомянутых причин, функция возвратит NULL:

mysql> UPDATE table_name SET blob_column=LOAD_FILE(«/tmp/picture») WHERE >

MySQL по мере необходимости автоматически преобразует числа в строки и наоборот:

mysql> SELECT 1+»1″;
-> 2
mysql> SELECT CONCAT(2,’ test’);
-> “2 test”

Если вы хотите преобразовывать число в строку явно, передайте его как параметр функции CONCAT().

Если строковая функция получает двоичную строку как параметр, возникающая в результате строка также будет двоичной. Числа, преобразованные в строку, также обрабатываются как двоичные строки. Это важно только для сравнений.

Строковые функции SQL – примеры использования

Мы продолжаем изучение языка запросов SQL, и сегодня мы с Вами будем разговаривать о строковых функциях SQL. Мы рассмотрим основные и часто используемые строковые функции, такие как: LOWER, LTRIM, REPLACE и другие, все рассматривать мы будем, конечно же, на примерах.

В прошлой статье «Основы языка запросов SQL – оператор SELECT» мы с Вами узнали, что такое вообще SQL, а также рассмотрели основы оператора SELECT (условия отбора, агрегатные функции), здесь же мы продолжаем изучение оператора SELECT, а если говорить конкретней, то будем рассматривать строковые функции SQL.

Строковые функции используются для возвращения уже отредактированного значения. Другими словами, например, у Вас в колонке все значения состоят более чем из 20 символов, а Вам нужно возвратить всего первые 5 символов, это можно сделать с помощью так называемых строковых функциях.

Теперь перейдем непосредственно к самим функциям. Здесь я рассматриваю только часто используемые в работе или просто полезные строковые функции.

Функция CONCAT

Начнем с функции CONCAT – она используется для объединения значений двух столбцов в один. Допустим у Вас в таблице, «Имя» и «Фамилия» находятся в разных колонках (что логично), а Вам, для какого-нибудь отчета, нужно чтобы они выводились в одной колонке. Вы можете легко использовать данную функцию.

С помощью данного запроса Вы объедините две колонки в одну, т.е. у Вас получится не вот так

Иван Иванов
Петр Петров
Иван Иванов
Петр Петров

Аналогично этому запросу можно использовать следующую конструкцию (применимо в PostgreSQL).

Или чтобы отделить пробелом введите

т.е. две вертикальные черты объединяют два столбца в один, а чтобы отделить их пробелом я поставил между ними пробел (можно использовать любой символ, например тире или двоеточие) в апострофах и объединил также двумя вертикальными чертами (в Transact-SQL вместо двух вертикальных черточек используется знак +).

Функция INITCAP

Дальше идет также очень полезная функция, INITCAP – которая возвращает значение в строке, в которой каждое слово начинается с заглавной буквы, а продолжается маленькими. Это нужно для того, если у Вас в той или иной колонке не соблюдают правила заполнения и для того чтобы вывести все это дело в красивом виде можно использовать данную функцию, например, у Вас в таблице записи в колонке name следующего вида: ИВАН иванов или петр петров, Вы применяете данную функцию.

И у Вас получится вот так.

Иван Иванов
Петр Петров

Функция LOWER

Следующая функция также может пригодиться. LOWER – возвращает в значение все слова с маленькой буквы. Используем пример выше, но только будем пользоваться следующий функцией.

А теперь получится вот так.

иван иванов
петр петров

Функция UPPER

Похожая функция, только возвращает все символы с заглавной буквы, это UPPER.

ИВАН ИВАНОВ
ПЕТР ПЕТРОВ

Функция LPAD

Далее идет функция LPAD — она пригодится Вам, если Вам необходимо дополнить слева некими символами, до определенного количества знаков. Допустим, Вам необходимо, чтобы длина поля «Имя» была 20 знаков, и если длина имени меньше (например, «Иван» явно меньше 20 знаков), то будет происходить дополнение слева специальным символом (для примера используем тире).

—————-Иван
—————Сергей
  • name – название колонки;
  • 20 – количество знаков (длина поля);
  • ‘-‘ – символ, которым нужно дополнить до необходимого количества знаков.

Функция RPAD

Сразу рассмотрим обратную функцию. RPAD – действие и синтаксис тот же что и у LPAD, только дополняются символы справа (в LPAD слева).

Иван—————-
Сергей—————

Функция LTRIM

Далее идет тоже в некоторых случаях полезная функция, LTRIM – эта функция удаляет крайние левые символы, которые Вы укажите. Например, у Вас в базе есть колонка «город», в которой город указан в виде «г.Москва», а также есть города которые указанны в виде просто «Москва». Но Вам нужно вывести отчет только в виде «Москва» без «г.», но как это сделать, если есть и такие и такие? Вы просто указываете своего рода шаблон «г.» и если крайние левые символы начинаются с «г.», то эти символы просто не будут выводиться.

г.Москва Москва Москва Москва г.Калуга Калуга

Данная функция просматривает символы слева, если символов по шаблону нет в начале строки, то она возвращает исходное значение ячейки, а если есть, то удаляет их.

Функция RTRIM

Также давайте сразу рассмотрим обратную функцию. RTRIM – то же самое что и LTRIM только символы ищутся справа.

Примечание! В Transact-SQL функции RTRIM и LTRIM удаляют пробелы справа и слева соответственно.

Функция REPLACE

Теперь рассмотрим такую интересную функцию как REPLACE – она возвращает строку, в которой все совпадения символов, заменяются на Ваши символы, которые Вы укажите. Для чего ее можно использовать, например, у Вас в базе есть колонки, в которых встречаются некие разделительные символы, допустим «/». Например, Иван/Иванов, а Вам хотелось бы вывести Иван-Иванов, то напишите

и у Вас произойдет замена символов.

Данная функция заменяет только полное совпадение символов, если например Вы укажите «—» т.е. три тире она и будет искать только три тире, а каждое отдельное тире заменять не будет, в отличие от следующей функции.


Функция TRANSLATE

TRANSLATE – строковая функция, которая заменяет все символы в строке, на те символы, которые Вы укажите. Исходя из названия функции, можно догадаться, что это полный перевод строки. Отличие данной функции от REPLACE в том, что она заменяет каждый символ, который Вы укажите, т.е. у Вас есть три символа, допустим абв и с помощью TRANSLATE Вы его можете заменить на abc таким образом у Вас а=a, б=b, в=c и по такому принципу будут заменяться все совпадения символов. А если Вы заменяли с помощью REPLACE, то у Вас искалось только полное совпадение символов абв расположенных подряд.

Функция SUBSTR

SUBSTR – данная функция, возвращает только тот диапазон символов, который Вы укажите. Другими словами, допустим, строка из 10 символов, а Вам все десять не нужны, а допустим, нужны только 3-8 (с третьего по восьмой). С помощью данной функции Вы легко можете это сделать. Например, у Вас в базе есть какой-нибудь идентификатор, фиксированной длинны (типа: AA-BB-55-66-CC) и каждая комбинация символов что-то означает. И в один прекрасный момент Вам сказали вывести только 2 и 3 комбинацию символов, для этого вы пишите запрос следующего вида.

т.е. мы выводим все символы, начиная с 4 и заканчивая 8, и после этого запроса у Вас выведется вот это:

BB-55

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

Следующая функция также может пригодиться, это LENGTH – которая просто на всего считает количество символов в строке. Например, Вам нужно узнать, сколько символов в каждой ячейки столбца допустим «name», таблица следующего вида.

Иван
Сергей
Виталий

после этого запроса Вы получите вот это.

4
6
7

Вот мы с Вами и рассмотрели основные строковые функции SQL. В следующих статьях мы продолжим изучение SQL.

Вопрос по string, mysql, function &#8211 MySQL строковые функции

У меня есть таблица со следующими данными:

Я использую этот запрос для получения объединенного значения местоположения.

Результат запроса выглядит так:

Но я хочу, чтобы запрос выглядел так: Bohol — Cebu — Manila — Bohol , Я хотел бы объединить такой результат. Как мне этого добиться? Я не очень знаком со строковыми функциями MySQL, поэтому мне нужны некоторые идеи, как заставить это работать. Любая помощь будет оценена. Большое спасибо!

Вот один из способов. Он отделяет два места от вашего единственного location столбец, отличает его, затем соединяетSQL Fiddle:

Возможно, вы ищете что-то более умное, хотя? Я чувствую «местоположение» больше похоже на «от-до»; Такие вещи? Я также подвергаю сомнению решение о сохранении более одного значения в вашем location колонка такая. Вы бы гораздо лучше хранить location1 а также location2 как отдельные столбцы.

Вам нужно использовать SEPARATOR в GROUP_CONCAT функция:

Example: SQLFIDDLE

Не рекомендуется хранить несколько значений в одном столбце. Лучше было бы:

Какв настоящее время принятый ответ кажетсявызвать проблемы позже, вот другая альтернатива. Это в значительной степени основано нарешение по lc. но заботится о заказе.

Во-первых: таблицы SQL имеютno well-defined row order, Когда вы запрашиваете все строки таблицы, эти строки будут возвращены в определенном порядке, но этот порядок не определен, может или не может быть связан с порядком, в котором были добавлены строки, и может неожиданно измениться. Поэтому, когда вы хотите обработать ваши строки в заданном порядке, вы должны добавить столбец, содержащий какой-нибудь порядковый номер или смилар. Это причина, по которой lc.продолжал беспокоить вас о порядке расположения.

Если у вас есть такой столбец, называется seq , тогда вы можете использовать следующий запрос:

Объединение создаст список различных местоположений, который будет объединен в одну строку с использованием крайнего выбора. Первая часть объединения дает первую половину первой части маршрута, тогда как вторая часть объединения даст вам вторую половину всех частей. Порядок результата объединения пока не определен, поэтому нам нужно общее правило упорядочения. Нам также нужно правило упорядочения для первой половины, чтобы мы действительно выбрали первую часть маршрута с предложением limit.

Вот это sqlfiddle, основанный на одной настройке Omesh. Из-за отсутствия seq столбец, он использует icode колонка для заказа вещей. Поэтому результат отличается от того, который вы ожидали, и производите Manila — Bohol — Cebu — Manila вместо.

Если вы добавите seq столбец, то вам придется изменить схему базы данных, так что вы могли бы также изменить ее таким образом, чтобы две конечные точки каждой части были превращены в два отдельных столбца. Объединение столбцов с использованием CONCAT это просто, но их разделение увеличивает сложность запросов как для разработчика, так и для движка базы данных.

Если вы не можете добавить столбец последовательности, поскольку у вас нет контроля над схемой базы данных, у вас проблемы.Ваш комментарий здесь указывает, что вы всегда ищете цикл, но найти такой цикл по неупорядоченным данным лучше всего с помощьюкарта, который не всегда доступен на уровне SQL. Этого можно добиться с помощью хранимой процедуры, если необходимо, выполняя один выбор для каждой части присяги, но я бы предпочел заняться этим на уровне приложения, если бы вы были вами.

Строковые функции MySQL4 (mysql sql string text)

Ключевые слова: mysql, sql, string, text, (найти похожие документы)

From: Андрей МАРЬЯН
Newsgroups: http://WebSupport.maryan.com.ua
Subject: Строковые функции MySQL4

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

Перевод: Андрей МАРЬЯН (Andrew MARYAN), http://www.maryan.com.ua/

Последнюю версию этой статьи, а также массу другой документации и
примеров, вы всегда можете найти по адресу http://WebSupport.maryan.com.ua/

— ASCII(str string)
— BIN(int integer)
— CHAR(int integer, . )
— CHARACTER_LENGTH(str string)
— CHAR_LENGTH(str string)
— CONCAT(str1 string, str2 string. )
— CONCAT_WS(separator string, str1 string, str2 string. )
— CONV(int_or_str integer or string, from_base integer, to_base integer)
— ELT( N integer, str1 string, str2 string, str3 string. )
— EXPORT_SET( bits, on string , off string, [separator char,[number_of_bits integer]])
— FIELD( str string, str1 string, str2 string, str3 string. )
— FIND_IN_SET( str string, strlist string )
— HEX(int_or_str string or integer)
— INSERT( str string, pos integer, len integer, newstr string )
— INSTR( str string, substr string)
— LCASE( str string ) string
— LEFT( str string, len integer)
— LENGTH(str string)
— LOAD_FILE( file_name string )
— LOCATE(substr string, str string, pos integer)
— LOWER( str string )
— LPAD( str string, len integer, padstr string)
— LTRIM( str string )
— MAKE_SET( bits, str1 string , str2 string . )
— MID(str string, pos integer, len integer)
— OCT(int integer)
— OCTET_LENGTH(str string)
— LOCATE(substr string, str string)
— ORD(str string)
— POSITION(substr string IN str string)
— REPLACE( str string, from_str string, to_str string)
— REPEAT( str string, count integer)
— REVERSE( str string )
— RIGHT( str string, len integer)
— RPAD( str string, len integer, padstr string)
— RTRIM( str string )
— SOUNDEX( str string )
— SPACE( N integer )
— SUBSTRING(str string FROM pos integer FOR len integer)
— SUBSTRING_INDEX( str string, delim string, count integer)
— TRIM( [[BOTH | LEADING | TRAILING] [remstr] string FROM] str string )
— UCASE( str string )
— UPPER( str string )

Любая строковая функция возвратит NULL, если строка результата
превышает длину, установленную параметром сервера max_allowed_packet.

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

Примеры:
mysql> select ASCII(‘2’);
-> 50
mysql> select ASCII(2);
-> 50
mysql> select ASCII(‘dx’);
-> 100

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

Если первый левый символ строки str не является многобайтовым, то
действие аналогично действию функции ASCII() — возвращает ASCII-код
первого левого символа строки str.

Примеры:
mysql> select ORD(‘2’);
-> 50

Мощная функция для конвертирования числа (int_or_str ) из одной
системы исчисления (from_base) в другую систему (to_base). Возвращает
NULL, если аргументы NULL. Минимальное значение .._base — 2,
максимальное 36.

Примеры:
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(), OCT(), HEX().

Возвращает двоичное значение аргумента int. Аналогично действию
CONV(int,10,2). Возвращает NULL, если аргумент int NULL.

Примеры:
mysql> select BIN(12);
-> ‘1100’

Возвращает восьмиричное значение аргумента int. Аналогично действию
CONV(int,10,8). Возвращает NULL, если аргумент int NULL.

Примеры:
mysql> select OCT(12);
-> ’14’

Возвращает шестнадцатиричное значение аргумента int_or_string.
Аналогично действию CONV(int,10,16). Возвращает NULL, если аргумент
int_or_string NULL.

Примеры:
mysql> select HEX(255);
-> ‘FF’
mysql> select HEX(«abc»);
-> 616263
mysql> select 0x616263;
-> «abc»

Возвращает строку символов определенных кодом/кодами ASCII. Значение
NULL пропускается.

Примеры:
mysql> select CHAR(77,121,83,81,’76’);
-> ‘MySQL’
mysql> select CHAR(77,77.3,’77.3′);
-> ‘MMM’

См. также ASCII(), ORD().

Объединяет строки Результатом является строка из состоящая из
аргументов. Возвращает 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().

Объединяет строки подобно функции CONCAT(), но с разделителем
separator, который всавляется между строк-аргументов. Если separator
является NULL, то результат будет 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’

См. также CONCAT().

Функции возвращают длину строки str.

Примеры:
mysql> select LENGTH(‘text’);
-> 4

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

См. такжe OCTET_LENGTH(), CHAR_LENGTH(),
CHARACTER_LENGTH().

Функции возвращают длину строки str.

Примеры:
mysql> select OCTET_LENGTH(‘text’);
-> 4

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

См. также LENGTH(), CHAR_LENGTH(), CHARACTER_LENGTH().

Функции возвращают длину строки str. Поддерживает многобайтовые
символы.

Примеры:
mysql> select CHAR_LENGTH(‘text’);
-> 4

См. также LENGTH(), OCTET_LENGTH(), CHARACTER_LENGTH().

Функции возвращают длину строки str.

Примеры:
mysql> select CHARACTER_LENGTH(‘text’);
-> 4

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

См. также LENGTH(), OCTET_LENGTH(), CHAR_LENGTH().

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

Примеры:
mysql> select POSITION(‘bar’, ‘foobarbar’);
-> 4
mysql> select POSITION(‘xbar’, ‘foobar’);
-> 0

LOCATE(substr string, str string) возвращает позицию первого вхождения
подстроки substr в строке str. Возвращает 0, если substr не найдено в
строке str. LOCATE(substr string, str string, pos integer) возвращает
позицию первого вхождения подстроки substr в строке str, но начиная с
pos. Возвращает 0, если substr не найдено в строке str (с учетом
позиции, естественно). Поддерживает многобайтовые символы.


Примеры:
mysql> select LOCATE(‘bar’, ‘foobarbar’,5);
-> 7
mysql> select LOCATE(‘bar’, ‘foobarbar’);
-> 4
mysql> select LOCATE(‘xbar’, ‘foobar’);
-> 0

См. также INSTR(), POSITION().

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

Примеры:
mysql> select INSTR(‘foobarbar’, ‘bar’);
-> 4
mysql> select INSTR(‘xbar’, ‘foobar’);
-> 0

См. также LOCATE(), POSITION().

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

Примеры:
mysql> select LPAD(‘hi’,4,’??’);
-> ‘??hi’

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

Примеры:
mysql> select RPAD(‘hi’,5,’?’);
-> ‘hi. ‘

Возвращает len первых символов изи строки str. Поддерживает
многобайтовые символы.

Примеры:
mysql> select LEFT(‘foobarbar’, 5);
-> ‘fooba’

См. также RIGHT(), SUBSTRING(), MID(),
SUBSTRING_INDEX()

Возвращает len последних символов изи строки str. Поддерживает
многобайтовые символы.

Примеры:
mysql> select RIGHT(‘foobarbar’, 4);
-> ‘rbar’

См. также LEFT(), SUBSTRING(), [103]MID(),
SUBSTRING_INDEX().

————————————————————-
string SUBSTRING( str string, pos integer, len integer )
string SUBSTRING(str string FROM pos integer FOR len integer)

Возвращает подстроку строки str длиною len символов с позиции pos.
Поддерживает многобайтовые символы. Вариант с «FROM » используется в
синтаксисе ANSI SQL92. В функции SUBSTRING() если не указан аргумент
len, то возвращает всю подстроку строки str с позиции pos.

Примеры:
mysql> select SUBSTRING(‘Quadratically’,5,6);
-> ‘ratica’
mysql> select SUBSTRING(‘Quadratically’,5);
-> ‘ratically’
mysql> select SUBSTRING(‘foobarbar’ FROM 4);
-> ‘barbar’

См. также LEFT(), RIGHT(), SUBSTRING_INDEX().

Возвращает подстроку строки str длиною len символов с позиции pos.
Поддерживает многобайтовые символы. Вариант с «FROM » используется в
синтаксисе ANSI SQL92. В функции SUBSTRING() если не указан аргумент
len, то возвращает всю подстроку строки str с позиции pos.

Примеры:
mysql> select MID(‘Quadratically’,5,6);
-> ‘ratica’
mysql> select MID(‘Quadratically’,5);
-> ‘ratically’
mysql> select MID(‘foobarbar’ FROM 4);
-> ‘barbar’

См. также LEFT(), RIGHT(), SUBSTRING_INDEX().

Возвращает всю подстроку строки str с позиции определенной
разделителем delim, находящимся по счету count.

Примеры:
mysql> select SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, 2);
-> ‘www.mysql’
mysql> select SUBSTRING_INDEX(‘www.mysql.com’, ‘.’, -2);
-> ‘mysql.com’

См. также LEFT(), SUBSTRING(), MID(), RIGHT().

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

Примеры:
mysql> select LTRIM(‘ barbar’);
-> ‘barbar’

См. также TRIM(), RTRIM().

string RTRIM( str string )

Возвращает строку str, удалив пробелы с конца строки. Поддерживает
многобайтовые символы.

Примеры:
mysql> select RTRIM(‘barbar ‘);
-> ‘barbar’

См. также TRIM(), LTRIM().

С одним аргументом «str» — возвращает строку str, удалив пробелы с
конца строки. Аргумент «remstr» определяет символ/подстроку для
удаления. Поддерживает многобайтовые символы. mysql> select TRIM(‘ bar
‘); -> ‘bar’

Примеры:
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’

См. также RTRIM(), LTRIM().

Вычисляет soundex ключ для str. Ключ soundex имеет такое свойство, что
слова, произносимые одинакого, имеют одинаковый soundex ключ, и это
может быть использовано для корректировки результатов поиска.
Возвращает строку длиной 4 символа, начинающуюся буквой A-Z.

Примеры:
mysql> select SOUNDEX(‘Hello’);
-> ‘H400’
mysql> select SOUNDEX(‘Quadratically’);
-> ‘Q36324’

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

Примеры:
mysql> select SPACE(6);
-> ‘ ‘

См. также REPEAT().

Возвращает строку str, заменив в ней все подстроки from_str на to_str.
Поддерживает многобайтовые символы.

Примеры:
mysql> select REPLACE(‘www.websupport.maryan.com.ua’, ‘w’, ‘Ww’);
-> ‘WwWwWw.Wwebsupport.maryan.com.ua’

Возвращает строку, состоящую из count раз повтореной строки str.
Возвратит NULL если один из аргументов NULL.

Примеры:
mysql> select REPEAT(‘MySQL’, 3);
-> ‘MySQLMySQLMySQL’

Возвращает строку, в которой все символы с последнего на первый. См.
пример. Поддерживает многобайтовые символы.

Примеры:
mysql> select REVERSE(‘abc’);
-> ‘cba’

Возвращает строку str, со вставкой подстроки newstr, с позиции pos
строки str и длиной len символов. Поддерживает многобайтовые символы.

Примеры:
mysql> select INSERT(‘Quadratic’, 3, 4, ‘What’);
-> ‘QuWhattic’

Возвратит str1, если N = 1, str2 если N = 2, И так далее. Возвратит
NULL если N меньше 1 больше количества аргументов.

Примеры:
mysql> select ELT(1, ‘ej’, ‘Heja’, ‘hej’, ‘foo’);
-> ‘ej’
mysql> select ELT(4, ‘ej’, ‘Heja’, ‘hej’, ‘foo’);
-> ‘foo’

Возвратит индекс (номер по порядку) 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

Возвращает значение от 1 до . в зависимости от позиции строки str
среди строк (подстрок) в строке strlist. Строки (подстроки) в strlist
разделены «,». Возвращает 0, если str не найдена среди строк в
strlist. Возвращает NULL, если один из аргументов NULL.

Примеры:
mysql> SELECT FIND_IN_SET(‘b’,’a,b,c,d’);
-> 2

См. также MAKE_SET().

Возвращает одну из строк-аргументов в зависимости от побитового
состояния bits. str1 возвратится при bit 0, str2 при bit 1, и так
далее.

Примеры:
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’);
-> »

См. также ELT(), FIND_IN_SET().

————————————————————-
string EXPORT_SET( bits, on string , off string, [separator char,[number_of_bits integer]])

Возвращает строку, в которой для каждого бита выводится состояние on
или off . Разделены состояния separator.

Примеры:
mysql> select EXPORT_SET(5,’Y’,’N’,’,’,4)
-> Y,N,Y,N

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

Примеры:
mysql> select LCASE(‘QUADRATICALLY’);
-> ‘quadratically’

См. также UCASE(), UPPER(), LCASE(), LOWER().

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

Примеры:
mysql> select LOWER(‘QUADRATICALLY’);
-> ‘quadratically’

См. также UCASE(), UPPER(), LCASE(), LOWER().

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

Примеры:
mysql> select UCASE(‘Hej’);
-> ‘HEJ’

См. также UCASE(), UPPER(), LCASE(), LOWER().

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

Примеры:
mysql> select UPPER(‘Hej’);
-> ‘HEJ’

См. также UCASE(), UPPER(), LCASE(), LOWER().

Читает файл и возвращает его контент в виде строки. file_name является
полным путем к файлу на сервере. Необходимо следить за физическим
наличием самого файла и соответствующими правами доступа скрипта к
нему. Файл должен быть размером не более, чем установлено параметром
max_allowed_packet. При возникновении проблем (отсутствие файла и тд.)
возвращает NULL. Дополнительную информацию по этой функции можно
получить http://www.mysql.com/documentation/mysql++/mysql++-examples.html

mysql> UPDATE table_name SET blob_column=LOAD_FILE(«/tmp/picture») WHERE >
*****

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

MySQL функция SUBSTRING

В этом учебном пособии вы узнаете, как использовать MySQL функцию SUBSTRING с синтаксисом и примерами.


Описание

MySQL функция SUBSTRING извлекает подстроку из строки.

Синтаксис

Синтаксис MySQL функции SUBSTRING:

Параметры или аргументы

string — исходная строка.

start_position — позиция начала извлечения подстроки. Первая позиция в строке всегда равна 1.

length — необязательный. Определяет количество символов для извлечения. Если этот параметр опущен, функция SUBSTRING возвращает всю оставшуюся строку.

Примечание

  • Первая позиция в строке — 1.
  • Если start_position — положительное число, функция SUBSTRING начинается с начала строки.
  • Если start_position — отрицательное число, функция SUBSTRING начинается с конца строки и отсчитывает в обратном направлении. Отрицательные значения для start_position были введены в MySQL 4.1.
  • Функция SUBSTRING и функция MID являются синонимами функции SUBSTR.

Применение

Функция SUBSTRING может использоваться в следующих версиях MySQL:

  • MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0, MySQL 3.23

Пример

Рассмотрим примеры MySQL функции SUBSTRING, чтобы понять, как использовать функцию SUBSTRING в MySQL.
Например:

О строковых функциях SQL или как манипулировать текстом в базе данных MySQL

Здравствуйте, уважаемые читатели блога webcodius.ru. Сегодня я хотел бы поговорить о языке SQL, а в частности о функциях для обработки текста. Для создания и управления сайтом часто бывает не обязательно знание языка SQL. Системы управления контентом позволяют редактировать контент сайта без написания запросов. Но хотя бы поверхностное знакомство с структурированным языком запросов поможет вам значительно ускорить модификацию и управление данными в базе данных вашего сайта.

Передо мной частенько возникают задачи: удалить часть текста из текстовых полей базы данных, объединить строковые данные или еще что-нибудь связанное с текстом. Делать все это через админские панели сайтов очень неудобно и муторно. Гораздо проще бывает написать запрос к базе данных выполняющий все эти действия за пару секунд.

Символьные функции в языке sql

Начнем по порядку с самого простого. Первой рассмотрим строковую функцию ASCII, которая используется для определения ASCII-кода текстовых символов:

integer ASCII(str string)

Функция возвращает целое значение — ASCII-код первого левого символа строки str. В случае если строка str пустая возвращает 0 и NULL если строка str не существует.

SELECT ASCII (‘t’);
Результат: 116
SELECT ASCII (‘test’);
Результат: 116
SELECT ASCII (1);
Результат: 49

Далее функция ORD, которая также определяет ASCII- код символов, но может обрабатывать также многобайтовые символы:

integer ORD(str string)

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

SELECT ORD (‘test’);
Результат: 116

Функция CHAR, тесно связанная с функцией ASCII и выполняет обратное действие:

string CHAR(int integer, . )

Функция CHAR возвращает строку символов по их ASCII-кодам. Если среди значений встречается значение NULL, то оно пропускается.

SELECT CHAR ( 116, ‘101’, 115, ‘116’ );
Результат: ‘test’

SQL функции для объединения строк

Одна из самых популярных категорий функций. Ведь частенько бывает нужно объединить значения нескольких полей таблиц базы данных сайта. В языке SQL есть сразу несколько функций для конкатенации строк.

string CONCAT(str1 string, str2 string. )

Функция возвращает строку, созданную путем объединения аргументов. Можно указывать более двух аргументов. Если один из аргументов является NULL, то и возвращаемый результат будет NULL. Числовые значения преобразуются в строку.

SELECT CONCAT (‘Hello’, ‘ ‘, ‘world’, ‘!’);
Результат: ‘Hello world!’
SELECT CONCAT (‘Hello’, NULL, ‘world’, ‘!’);
Результат: NULL
SELECT CONCAT (‘Число пи’, ‘=’, 3.14);
Результат: ‘Число пи=3.14’

Как видно из примеров, строки объединяются без разделителей. Для того чтобы разделить слова в первом примере в качестве аргумента приходится использовать пробел. Если бы слов было больше, то каждый раз вставлять пробелы было бы не очень удобно.

Для таких случаев существует функция CONCAT_WS:

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

Функция объединяет строки как и функция CONCAT, но вставляет между аргументами разделитель separator. В случае если аргумент separator является NULL, то и результат будет NULL. Аргументы строки равные NULL пропускаются.

SELECT CONCAT_WS (‘ ‘, ‘Иванов’, ‘Иван’, ‘Иванович’);
Результат: ‘Иванов Иван Иванович’
SELECT CONCAT_WS (NULL, ‘Иванов’, ‘Иван’, ‘Иванович’);
Результат: NULL
SELECT CONCAT_WS (‘ ‘, ‘Иванов’, NULL, ‘Иван’, ‘Иванович’);
Результат: »Иванов Иван Иванович’

В случае объединения большого количества строк, которые необходимо отделять разделителем, функция CONCAT_WS гораздо удобнее функции CONCAT.

Иногда бывает необходимо удлинить строку до определенного количества символов за счет повторения какого-либо символа. Это тоже своего рода объединение строк. Для этого можно использовать функции LPAD и RPAD. Функции имеют следующий синтаксис:

string LPAD(str string, len integer, padstr string)
string RPAD(str string, len integer, padstr string)

Функция LPAD возвращает строку str дополненную слева строкой padstr до длины len. Функция RPAD выполняет тоже самое, только удлинение происходит с правой стороны.

SELECT LPAD (‘test’, 10, ‘.’);
Результат: . test
SELECT RPAD (‘test’, 10, ‘.’);
Результат: test.

В данных функциях необходимо обратить внимание на параметр len, который ограничивает количество выводимых символов. Поэтому если длина строки str будет больше чем параметр len, то строка будет обрезана:

SELECT LPAD (‘test’, 3, ‘.’);
Результат: tes

Определение длины строки в sql запросах

Для определения количества символов в строке в языке SQL отвечает функция LENGTH — длина строки:

integer LENGTH(str string)

Функция возвращает целое число равное количеству символов в строке str.

SELECT LENGTH (‘test’);
Результат: 4

В случае использования многобайтовых кодировок функция LENGTH выдает не правильный результат. Например в случае если задана кодировка unicode, то запрос:

SELECT LENGTH (‘тест’);

вернет 8. Что, легко заметить, в два раза больше реального количества символов. В этом случае нужно использовать функцию CHAR_LENGTH:

integer CHAR_LENGTH(str string)

Функция также возвращает длину строки str и поддерживает многобайтовые символы.

SELECT CHAR_LENGTH (‘тест’);
Результат: 4

Поиск подстроки в строке средствами sql

Для вычисления позиции подстроки в строке в языке sql существует несколько функций. Первая, которую мы рассмотрим, функция POSITION:

integer POSITION(substr string IN str string)

Возвращает номер позиции первого вхождения подстроки substr в строке str и возвращает 0 если подстрока не найдена. Функция POSITION может работать с многобайтовыми символами.

SELECT POSITION (‘cd’ IN ‘abcdcde’);
Результат: 3
SELECT POSITION (‘xy’ IN ‘abcdcde’);
Результат: 0

Следующая функция LOCATE позволяет начинать поиск подстроки с определенной позиции:

integer LOCATE(substr string, str string, pos integer)

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

SELECT LOCATE (‘cd’, ‘abcdcdde’, 5);
Результат: 5
SELECT LOCATE (‘cd’, ‘abcdcdde’);
Результат: 3

Аналогом функций POSITION и LOCATE является функция INSTR:

integer INSTR(str string, substr string)

Также как и функции выше возвращает позицию первого вхождения подстроки substr в строке str. Единственное отличие от функций POSITION и LOCATE то, что аргументы поменяны местами.

Далее рассмотрим функции, которые помогают получить подстроку.


Первыми рассмотрим сразу две функции LEFT и RIGHT, которые похожи по своему действию:

string LEFT(str string, len integer)
string RIGHT(str string, len integer)

Функция LEFT возвращает len первых символов из строки str, а функция RIGHT столько же последних. Поддерживают многобайтовые символы.

SELECT LEFT (‘Москва’, 3);
Результат: Мос
SELECT RIGHT (‘Москва’, 3);
Результат: ква

Далее рассмотрим одинаковые по итоговому результату функции SUBSTRING и MID:

string SUBSTRING(str string, pos integer, len integer)
string MID(str string, pos integer, len integer)

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

SELECT SUBSTRING (‘г. Москва — столица России’, 4, 6);
Результат: Москва
SELECT SUBSTRING (‘г. Москва — столица России’, 4);
Результат: Москва — столица России

Примеры с функцией MID не привожу, потому что результаты будут аналогичные.

Интересная функция SUBSTRING_INDEX:

string SUBSTRING_INDEX(str string, delim string, count integer)

Функция возвращает подстроку строки str, полученную путем удаления символов, идущих после разделителя delim, находящимся в позиции count. Параметр count может быть как положительным, так отрицательным. Если count положительный, то отсчет позиции разделителя будет вестись слева и удаляться будут символы находящиеся справа от разделителя. Если count отрицательный, то отсчет позиции разделителя ведется справа и удаляются символы находящиеся слева от разделителя. Возможно, описание получилось слишком запутанным, но на примерах станет понятней.

SELECT SUBSTRING_INDEX (‘www.mysql.ru’, ‘.’, 1);
Результат: www

В данном примере функция находит, первое вхождения символа точки в строке «www.mysql.ru» и удаляет все символы, идущие после нее, включая сам разделитель.

SELECT SUBSTRING_INDEX (‘www.mysql.ru’, ‘.’, 2);
Результат: www.mysql

Здесь функция ищет второе вхождение точки, удаляет все символы справа от нее и возвращает получившуюся подстроку. И еще один пример с отрицательным значением параметра count:

SELECT SUBSTRING_INDEX (‘www.mysql.ru’, ‘.’, -2);
Результат: mysql.ru

В этом примере функция SUBSTRING_INDEX ищет вторую точку, отсчитывая позицию справа, удаляет символы слева от нее и выдает полученную подстроку.

Удаление пробелов из строки

Для удаления лишних пробелов из начала и конца строки в языке SQL есть три функции.

string LTRIM(str string)

Удаляет с начала строки str пробелы и возвращает результат.

string RTRIM(str string)

Также удаляет пробелы из строки str, только с конца. Обе функции поддерживают многобайтовые символы.

SELECT LTRIM (‘ текст ‘);
Результат: ‘текст ‘
SELECT RTRIM (‘ текст ‘);
Результат: ‘ текст’

И третья функция TRIM позволяет сразу удалять пробелы из начала и из конца строки:

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

Параметр str обязательный, остальные параметры не обязательные. В случае если задан только один параметр str, то возвращает строку str удалив пробелы из начала и конца строки одновременно.

SELECT TRIM (‘ текст ‘);
Результат: ‘текст’

С помощью пара метра remstr можно задавать символы или подстроки, которые будут удаляться из начала и конца строки. С помощью управляющих параметров BOTH, LEADING, TRAILING можно задавать откуда будут удаляться символы:

  • BOTH — удаляет подстроку remstr с начала и с конца строки;
  • LEADING — удаляет remstr с начала строки;
  • TRAILING — удаляет remstr с конца строки.

SELECT TRIM (BOTH ‘а’ FROM ‘текст’);
Результат: ‘текст’
SELECT TRIM (LEADING ‘а’ FROM ‘текстааа’);
Результат: ‘текстааа’
SELECT TRIM (TRAILING ‘а’ FROM ‘ааатекст’);
Результат: ‘ааатекст’

Функция SPACE позволяет получить строку состоящую из определенного количества пробелов:

string SPACE(n integer)

Возвращает строку, которая состоит из n пробелов.

Функция REPLACE нужна для замены заданных символов в строке:

string REPLACE(str string, from_str string, to_str string)

Функция заменяет в строке str все подстроки from_str на to_str и возвращает результат. Поддерживает многобайтные символы.

SELECT REPLACE ( ‘замена подстроки’, ‘подстроки’, ‘текста’ )
Результат: ‘замена текста’

string REPEAT(str string, count integer)

Функция возвращает строку, которая состоит из count повторений строки str. Поддерживает многобайтовые символы.

SELECT REPEAT (‘w’, 3);
Результат: ‘www’

Функция REVERSE переворачивает строку:

string REVERSE(str string)

Переставляет в строке str все символы с последнего на первый и возвращает результат. Поддерживает многобайтовые символы.

SELECT REVERSE (‘текст’);
Результат: ‘тскет’

Функция INSERT для вставки подстроки в строку:

string INSERT(str string, pos integer, len integer, newstr string)

Возвращает строку полученную в результате вставки в строку str подстроки newstr с позиции pos. Параметр len указывает сколько символов будет удалено из строки str, начиная с позиции pos. Поддерживает многобайтовые символы.

SELECT INSERT (‘text’, 2, 5, ‘MySQL’);
Результат: ‘tMySQL’
‘SELECT INSERT (‘text’, 2, 0, ‘MySQL’);
Результат: ‘tMySQLext’
SELECT INSERT (‘вставка текста’, 2, 7, ‘MySQL’);
Результат: ‘SELECT INSERT (‘вставка текста’, 2, 7, ‘MySQL’);’

Если вдруг понадобиться заеменить в тексте все заглавные буквы на прописные, то можно воспользоваться одной из двух функций:

string LCASE(str string) и string LOWER(str string)

Обе функции заменяют в строке str заглавные буквы на прописные и возвращают результат. И та и другая поддерживают многобайтовые символы.

SELCET LOWER (‘АБВГДеЖЗиКЛ’);
Результат:’абвгдежзикл’

Если же наоборот необходимо прописные буквы заменить заглавными, то также можно применить одну из двух функцийй:

string UCASE(str string) и string UPPER (str string)

Функции возвращают строку str, заменив все прописные символы на заглавные. Также поддерживают многобайтовые символы.
Пример:

SELECT UPPER (‘Абвгдежз’);
Результат: ‘АБВГДЕЖЗ’

Строковых функций в языке SQL немного больше, чем рассмотрено в данной статье. Но так как даже большинство рассмотренных здесь функций используются редко, я закончу их рассмотрение. В следующих статьях я постараюсь рассмотреть реальные практические примеры использования строковых функций SQL. Поэтому не забудьте подписаться на обновления блога. До новых встреч!

SUBSTRING (Transact-SQL) SUBSTRING (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Возвращает часть символьного, двоичного, текстового или графического выражения в SQL Server SQL Server . Returns part of a character, binary, text, or image expression in SQL Server SQL Server .

Синтаксис Syntax

Аргументы Arguments

expression expression
Выражение типа character, binary, text, ntext или image. Is a character, binary, text, ntext, or image expression.

start start
Целое число или выражение типа bigint, указывающее начальную позицию возвращаемых символов. Is an integer or bigint expression that specifies where the returned characters start. (Нумерация начинается с 1, то есть первый символ в выражении имеет позицию 1.) (The numbering is 1 based, meaning that the first character in the expression is 1). Если аргумент start имеет значение меньше 1, то возвращаемое выражение начинается с первого символа, который указан в аргументе expression. If start is less than 1, the returned expression will begin at the first character that is specified in expression. В этом случае количество возвращаемых символов является наибольшим значением либо суммы start + length– 1, либо 0. In this case, the number of characters that are returned is the largest value of either the sum of start + length— 1 or 0. Если значение start больше количества символов в выражении значения, возвращается выражение нулевой длины. If start is greater than the number of characters in the value expression, a zero-length expression is returned.

length length
Положительное целое число или выражение типа bigint, указывающее количество символов выражения expression, которое будет возвращено. Is a positive integer or bigint expression that specifies how many characters of the expression will be returned. Если значение length отрицательно, возникает ошибка и выполнение инструкции прерывается. If length is negative, an error is generated and the statement is terminated. Если сумма start и length больше количества символов в expression, то возвращается целочисленное выражение значения, начинающееся со значения start. If the sum of start and length is greater than the number of characters in expression, the whole value expression beginning at start is returned.

Типы возвращаемых данных Return Types

Возвращает символьные данные, если expression имеет один из поддерживаемых символьных типов данных. Returns character data if expression is one of the supported character data types. Возвращает двоичные данные, если аргумент expression имеет один из поддерживаемых двоичных типов данных. Returns binary data if expression is one of the supported binary data types. Возвращенная строка имеет тот же самый тип, как и заданное выражение. Исключения указаны в таблице. The returned string is the same type as the specified expression with the exceptions shown in the table.

Заданное выражение Specified expression Возвращаемый тип Return type
char/varchar/text char/varchar/text varchar varchar
nchar/nvarchar/ntext nchar/nvarchar/ntext nvarchar nvarchar
binary/varbinary/image binary/varbinary/image varbinary varbinary

Remarks Remarks

Значения start и length должны быть указаны в виде количества символов для типов данных ntext, char или varchar и байтов для типов данных text, image, binary или varbinary. The values for start and length must be specified in number of characters for ntext, char, or varchar data types and bytes for text, image, binary, or varbinary data types.

Аргумент expression должен иметь тип varchar(max) или varbinary(max) , если аргумент start или length содержит значение, превышающее 2 147 483 647. The expression must be varchar(max) or varbinary(max) when the start or length contains a value larger than 2147483647.

Дополнительные символы (суррогатные пары) Supplementary Characters (Surrogate Pairs)

При использовании параметров сортировки дополнительных символов (SC) и start, и length обрабатывают каждую суррогатную пару в expression как один символ. When using supplementary character (SC) collations, both start and length count each surrogate pair in expression as a single character. Дополнительные сведения см. в статье Collation and Unicode Support. For more information, see Collation and Unicode Support.

Примеры Examples

A. A. Использование SUBSTRING с символьной строкой Using SUBSTRING with a character string

Следующий пример показывает, как получить часть символьной строки. The following example shows how to return only a part of a character string. Из таблицы sys.databases этот запрос возвращает имена системных баз данных в первом столбце, первую букву имени базы данных во втором столбце и третий и четвертый символы в последнем столбце. From the sys.databases table, this query returns the system database names in the first column, the first letter of the database in the second column, and the third and fourth characters in the final column.

Ниже приводится результирующий набор. Here is the result set.

name name Initial Initial ThirdAndFourthCharacters ThirdAndFourthCharacters
master master m m st st
tempdb tempdb t t mp mp
model model m m de de
msdb msdb m m db db

Далее показано, как можно вывести второй, третий и четвертый символ строковой константы abcdef . Here is how to display the second, third, and fourth characters of the string constant abcdef .

Ниже приводится результирующий набор. Here is the result set.

Б. B. Использование SUBSTRING с данными типа text, ntext или image Using SUBSTRING with text, ntext, and image data

Для выполнения приведенных ниже примеров необходимо установить базу данных pubs. To run the following examples, you must install the pubs database.

В приведенном ниже примере показано, как вернуть первые 10 символов из каждого столбца данных text и image в таблице pub_info базы данных pubs . The following example shows how to return the first 10 characters from each of a text and image data column in the pub_info table of the pubs database. Данные text возвращаются как varchar, а данные image — как varbinary. text data is returned as varchar, and image data is returned as varbinary.

Ниже приводится результирующий набор. Here is the result set.

В приведенном ниже примере показано влияние функции SUBSTRING на данные типов text и ntext. The following example shows the effect of SUBSTRING on both text and ntext data. Во-первых, пример создает новую таблицу в базе данных pubs под именем npub_info . First, this example creates a new table in the pubs database named npub_info . Во-вторых, пример создает столбец pr_info в таблице npub_info из первых 80 символов столбца pub_info.pr_info и добавляет ü в качестве первого символа. Second, the example creates the pr_info column in the npub_info table from the first 80 characters of the pub_info.pr_info column and adds an ü as the first character. Наконец, с помощью предложения INNER JOIN извлекаются все идентификационные номера издателей, а также обработанные функцией SUBSTRING значения столбцов типа text и ntext со сведениями об издателях. Lastly, an INNER JOIN retrieves all publisher identification numbers and the SUBSTRING of both the text and ntext publisher information columns.

Примеры: Azure Synapse Analytics (хранилище данных SQL) Azure Synapse Analytics (SQL DW) и Параллельное хранилище данных Parallel Data Warehouse Examples: Azure Synapse Analytics (хранилище данных SQL) Azure Synapse Analytics (SQL DW) and Параллельное хранилище данных Parallel Data Warehouse

В. C. Использование SUBSTRING с символьной строкой Using SUBSTRING with a character string

Следующий пример показывает, как получить часть символьной строки. The following example shows how to return only a part of a character string. Из таблицы dbo.DimEmployee данный запрос возвращает фамилию в одном столбце и первую букву имени в другом. From the dbo.DimEmployee table, this query returns the last name in one column with only the first initial in the second column.

Ниже приводится результирующий набор. Here is the result set.

В приведенном ниже примере показано, как получить второй, третий и четвертый символы строковой константы abcdef . The following example shows how to return the second, third, and fourth characters of the string constant abcdef .

Ниже приводится результирующий набор. Here is the result set.

Илон Маск рекомендует:  Добавление стилей на веб-страницу
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL