14.8 Функции и операторы строк
Таблица 14.12 Функции и операторы строк
| Имя | Описание |
|---|---|
ASCII() | Возвращает числовое значение левого символа |
BIN() | Возвращает строку, содержащую двоичное представление числа |
BIT_LENGTH() | Возвращает длину аргумента в битах |
CHAR() | Возвращает символ для каждого переданного целого числа |
CHAR_LENGTH() | Возвращает количество символов в аргументе |
CHARACTER_LENGTH() | Синоним для CHAR_LENGTH() |
CONCAT() | Возвращает конкатенированную строку |
CONCAT_WS() | Возвращает конкатенированную строку с разделителем |
ELT() | Возвращает строку по номеру индекса |
EXPORT_SET() | Возвращает строку, где для каждого установленного бита в значении bits вы получите строку "on", а для каждого сброшенного бита - "off" |
FIELD() | Индекс (позиция) первого аргумента в последующих аргументах |
FIND_IN_SET() | Индекс (позиция) первого аргумента внутри второго аргумента |
FORMAT() | Возвращает число, отформатированное до указанного количества десятичных знаков |
HEX() | Шестнадцатеричное представление десятичного или строкового значения |
INSERT() | Вставляет подстроку в указанную позицию до указанного количества символов |
INSTR() | Возвращает индекс первого вхождения подстроки |
LCASE() | Синоним для LOWER() |
LEFT() | Возвращает левую часть строки заданной длины |
LENGTH() | Возвращает длину строки в байтах |
LIKE | Простое сопоставление шаблонов |
LOAD_FILE() | Загружает файл с указанным именем |
LOCATE() | Возвращает позицию первого вхождения подстроки |
LOWER() | Возвращает аргумент в нижнем регистре |
LPAD() | Возвращает строку, дополненную слева указанной строкой |
LTRIM() | Удаляет начальные пробелы |
MAKE_SET() | Возвращает набор строк, разделенных запятыми, у которых соответствующий бит в bits установлен |
MATCH() | Выполняет полнотекстовый поиск |
MID() | Возвращает подстроку, начинающуюся с указанной позиции |
NOT LIKE | Отрицание простого сопоставления шаблонов |
NOT REGEXP | Отрицание REGEXP |
OCT() | Возвращает строку, содержащую восьмеричное представление числа |
OCTET_LENGTH() | Синоним для LENGTH() |
ORD() | Возвращает код символа для левого символа аргумента |
POSITION() | Синоним для LOCATE() |
QUOTE() | Экранирует аргумент для использования в SQL-запросе |
REGEXP | Соответствует ли строка регулярному выражению |
REGEXP_INSTR() | Начальный индекс подстроки, соответствующей регулярному выражению |
REGEXP_LIKE() | Соответствует ли строка регулярному выражению |
REGEXP_REPLACE() | Заменяет подстроки, соответствующие регулярному выражению |
REGEXP_SUBSTR() | Возвращает подстроку, соответствующую регулярному выражению |
REPEAT() | Повторяет строку заданное количество раз |
REPLACE() | Заменяет вхождения указанной строки |
REVERSE() | Обращает порядок символов в строке |
RIGHT() | Возвращает заданное количество правых символов |
RLIKE | Соответствует ли строка регулярному выражению |
RPAD() | Дополняет строку указанное количество раз |
RTRIM() | Удаляет конечные пробелы |
SOUNDEX() | Возвращает строку soundex |
SOUNDS LIKE | Сравнивает звучание |
SPACE() | Возвращает строку из указанного количества пробелов |
STRCMP() | Сравнивает две строки |
SUBSTR() | Возвращает подстроку по заданным параметрам |
SUBSTRING() | Возвращает подстроку по заданным параметрам |
SUBSTRING_INDEX() | Возвращает подстроку из строки до указанного количества вхождений разделителя |
TRIM() | Удаляет начальные и конечные пробелы |
UCASE() | Синоним для UPPER() |
UNHEX() | Возвращает строку, содержащую шестнадцатеричное представление числа |
UPPER() | Преобразовать в верхний регистр |
WEIGHT_STRING() | Возвращает строку веса для строки |
Функции, возвращающие строковые значения, возвращают NULL, если длина результата будет больше значения системной переменной max_allowed_packet. См. Раздел 7.1.1, «Настройка сервера».
Для функций, работающих с позициями строк, первая позиция имеет номер 1.
Для функций, принимающих аргументы длины, нецелые аргументы округляются до ближайшего целого.
-
Возвращает числовое значение самого левого символа строки
str. Возвращает0, еслиstrявляется пустой строкой. ВозвращаетNULL, еслиstrявляетсяNULL.ASCII()работает для 8-битных символов.mysql>
SELECT ASCII('2');-> 50 mysql>SELECT ASCII(2);-> 50 mysql>SELECT ASCII('dx');-> 100См. также функцию
ORD(). -
Возвращает строковое представление двоичного значения
N, гдеN— целое число типа longlong (BIGINT). Это эквивалентноCONV(. ВозвращаетN,10,2)NULL, еслиNявляетсяNULL.mysql>
SELECT BIN(12);-> '1100' -
Возвращает длину строки
strв битах. ВозвращаетNULL, еслиstrявляетсяNULL.mysql>
SELECT BIT_LENGTH('text');-> 32 -
CHAR(N,... [USINGcharset_name])CHAR()интерпретирует каждый аргументNкак целое число и возвращает строку, состоящую из символов, заданных кодовыми значениями этих целых чисел. ЗначенияNULLпропускаются.mysql>
SELECT CHAR(77,121,83,81,'76');+--------------------------------------------------+ | CHAR(77,121,83,81,'76') | +--------------------------------------------------+ | 0x4D7953514C | +--------------------------------------------------+ 1 row in set (0.00 sec) mysql>SELECT CHAR(77,77.3,'77.3');+--------------------------------------------+ | CHAR(77,77.3,'77.3') | +--------------------------------------------+ | 0x4D4D4D | +--------------------------------------------+ 1 row in set (0.00 sec)По умолчанию
CHAR()возвращает двоичную строку. Для создания строки в заданной кодировке используйте дополнительную клаузуUSING:mysql>
SELECT CHAR(77,121,83,81,'76' USING utf8mb4);+---------------------------------------+ | CHAR(77,121,83,81,'76' USING utf8mb4) | +---------------------------------------+ | MySQL | +---------------------------------------+ 1 row in set (0.00 sec) mysql>SELECT CHAR(77,77.3,'77.3' USING utf8mb4);+------------------------------------+ | CHAR(77,77.3,'77.3' USING utf8mb4) | +------------------------------------+ | MMM | +------------------------------------+ 1 row in set, 1 warning (0.00 sec) mysql>SHOW WARNINGS;+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: '77.3' | +---------+------+-------------------------------------------+ 1 row in set (0.00 sec)Если
USINGзадана и результирующая строка недопустима для данной кодировки, выдаётся предупреждение. Также, если включён строгий режим SQL, результат отCHAR()становитсяNULL.Если
CHAR()вызывается из клиента mysql, двоичные строки отображаются в шестнадцатеричном формате, в зависимости от значения--binary-as-hex. Для получения дополнительной информации об этом параметре см. Раздел 6.5.1, «mysql — The MySQL Command-Line Client».Аргументы
CHAR()больше 255 преобразуются в несколько байтов результата. Например,CHAR(256)эквивалентноCHAR(1,0), аCHAR(256*256)эквивалентноCHAR(1,0,0):mysql>
SELECT HEX(CHAR(1,0)), HEX(CHAR(256));+----------------+----------------+ | HEX(CHAR(1,0)) | HEX(CHAR(256)) | +----------------+----------------+ | 0100 | 0100 | +----------------+----------------+ 1 row in set (0.00 sec) mysql>SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));+------------------+--------------------+ | HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) | +------------------+--------------------+ | 010000 | 010000 | +------------------+--------------------+ 1 row in set (0.00 sec) -
Возвращает длину строки
str, измеренную в кодовых точках. Многобайтовый символ учитывается как одна кодовая точка. Это означает, что для строки, содержащей два символа по 3 байта,LENGTH()возвращает6, аCHAR_LENGTH()возвращает2, как показано ниже:mysql>
SET @dolphin:='海豚';Query OK, 0 rows affected (0.01 sec) mysql>SELECT LENGTH(@dolphin), CHAR_LENGTH(@dolphin);+------------------+-----------------------+ | LENGTH(@dolphin) | CHAR_LENGTH(@dolphin) | +------------------+-----------------------+ | 6 | 2 | +------------------+-----------------------+ 1 row in set (0.00 sec)CHAR_LENGTH()возвращаетNULL, еслиstrявляетсяNULL. -
CHARACTER_LENGTH()— синоним дляCHAR_LENGTH(). -
Возвращает строку, полученную путём конкатенации аргументов. Может иметь один или несколько аргументов. Если все аргументы — строки без бинарного представления, результат — строка без бинарного представления. Если аргументы включают бинарные строки, результат — бинарная строка. Числовой аргумент преобразуется в эквивалентную строку без бинарного представления.
CONCAT()возвращаетNULL, если любой из аргументов являетсяNULL.mysql>
SELECT CONCAT('My', 'S', 'QL');-> 'MySQL' mysql>SELECT CONCAT('My', NULL, 'QL');-> NULL mysql>SELECT CONCAT(14.3);-> '14.3'Для строковых литералов конкатенация может быть выполнена путём размещения строк рядом друг с другом:
mysql>
SELECT 'My' 'S' 'QL';-> 'MySQL'Если
CONCAT()вызывается из клиента mysql, результаты бинарных строк отображаются в шестнадцатеричном формате в зависимости от значения--binary-as-hex. Для получения дополнительной информации об этом параметре см. Раздел 6.5.1, «mysql — The MySQL Command-Line Client». -
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'CONCAT_WS()не пропускает пустые строки. Однако он пропускает любыеNULLзначения после аргумента разделителя. -
ELT()возвращаетN-й элемент списка строк:str1, еслиN=1,str2, еслиN=2, и так далее. ВозвращаетNULL, еслиNменьше1, больше, чем количество аргументов, илиNULL.ELT()— дополнение кFIELD().mysql>
SELECT ELT(1, 'Aa', 'Bb', 'Cc', 'Dd');-> 'Aa' mysql>SELECT ELT(4, 'Aa', 'Bb', 'Cc', 'Dd');-> 'Dd' -
EXPORT_SET(bits,on,off[,separator[,number_of_bits]])Возвращает строку, такую что для каждого установленного бита в значении
bitsвы получите строкуon, а для каждого не установленного бита — строкуoff. Биты вbitsрассматриваются справа налево (от младшего к старшему биту). Строки добавляются в результат слева направо, разделённые строкойseparator(по умолчанию — запятая,). Количество рассматриваемых битов задаётсяnumber_of_bits, которое по умолчанию равно 64, если не указано другое значение.number_of_bitsнеявно обрезается до 64, если больше. Оно обрабатывается как беззнаковое целое число, поэтому значение −1 фактически равно 64.mysql>
SELECT EXPORT_SET(5,'Y','N',',',4);-> 'Y,N,Y,N' mysql>SELECT EXPORT_SET(6,'1','0',',',10);-> '0,1,1,0,0,0,0,0,0,0' -
Возвращает индекс (позицию)
strв спискеstr1,str2,str3,.... Возвращает0, еслиstrне найдено.Если все аргументы для
FIELD()— строки, все аргументы сравниваются как строки. Если все аргументы — числа, они сравниваются как числа. В противном случае аргументы сравниваются как числа с плавающей точкой.Если
strявляетсяNULL, возвращаемое значение —0, так какNULLне проходит сравнение на равенство ни с каким значением.FIELD()— дополнение кELT().mysql>
SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');-> 2 mysql>SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');-> 0
-
Возвращает значение в диапазоне от 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 -
Форматирует число
Xв формат, подобный'#,###,###.##', округляя доDдесятичных знаков и возвращает результат в виде строки. ЕслиD—0, результат не содержит десятичной точки или дробной части. ЕслиXилиD—NULL, функция возвращаетNULL.Необязательный третий параметр позволяет указать локаль, которая будет использоваться для десятичной точки, разделителя тысяч и группирования разделителей в результирующем числе. Допустимые значения локали — те же, что и допустимые значения для системной переменной
lc_time_names(см. Раздел 12.16, «Поддержка локали MySQL Server»). Если локаль —NULLили не указана, используется локаль по умолчанию —'en_US'.mysql>
SELECT FORMAT(12332.123456, 4);-> '12,332.1235' mysql>SELECT FORMAT(12332.1,4);-> '12,332.1000' mysql>SELECT FORMAT(12332.2,0);-> '12,332' mysql>SELECT FORMAT(12332.2,2,'de_DE');-> '12.332,20' -
Принимает строку, закодированную с использованием правил кодирования base-64, используемых функцией
TO_BASE64(), и возвращает декодированный результат как бинарную строку. Результатом являетсяNULL, если аргумент —NULLили не является допустимой строкой base-64. Подробности о правилах кодирования и декодирования см. в описанииTO_BASE64().mysql>
SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc'));-> 'JWJj', 'abc'Если
FROM_BASE64()вызывается из клиента mysql, бинарные строки отображаются в шестнадцатеричном формате. Это поведение можно отключить, установив значение переменной--binary-as-hexв0при запуске клиента mysql. Дополнительную информацию об этой опции см. в Разделе 6.5.1, «mysql — Клиентская командная строка MySQL». -
Для строкового аргумента
strфункцияHEX()возвращает шестнадцатеричное строковое представлениеstr, где каждый байт каждого символа вstrпреобразуется в две шестнадцатеричные цифры. (Многобайтовые символы, следовательно, преобразуются в более чем две цифры.) Обратную операцию выполняет функцияUNHEX().Для числового аргумента
NфункцияHEX()возвращает шестнадцатеричное строковое представление значенияN, рассматриваемого как число longlong (BIGINT). Это эквивалентноCONV(. Обратную операцию выполняет функцияN,10,16)CONV(HEX(.N),16,10)Для аргумента
NULLфункция возвращаетNULL.mysql>
SELECT X'616263', HEX('abc'), UNHEX(HEX('abc'));-> 'abc', 616263, 'abc' mysql>SELECT HEX(255), CONV(HEX(255),16,10);-> 'FF', 255 -
Возвращает строку
str, в которой подстрока, начинающаяся с позицииposи имеющая длинуlenсимволов, заменяется строкойnewstr. Возвращает исходную строку, еслиposне находится в пределах длины строки. Заменяет остальную часть строки с позицииpos, еслиlenне находится в пределах длины оставшейся части строки. ВозвращаетNULL, если любой из аргументов —NULL.mysql>
SELECT INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic' mysql>SELECT INSERT('Quadratic', -1, 4, 'What');-> 'Quadratic' mysql>SELECT INSERT('Quadratic', 3, 100, 'What');-> 'QuWhat'Эта функция безопасна для многобайтовых символов.
-
Возвращает позицию первого вхождения подстроки
substrв строкеstr. Это то же самое, что и двухаргументная форма функцииLOCATE(), за исключением того, что порядок аргументов изменён.mysql>
SELECT INSTR('foobarbar', 'bar');-> 4 mysql>SELECT INSTR('xbar', 'foobar');-> 0Эта функция безопасна для многобайтовых символов и регистрозависима только в том случае, если хотя бы один аргумент — бинарная строка. Если любой из аргументов —
NULL, функция возвращаетNULL. -
LCASE()является синонимом дляLOWER().LCASE(), используемая в представлении, переписывается какLOWER()при сохранении определения представления. (Ошибка #12844279) -
Возвращает левые
lenсимволов строкиstrилиNULL, если любой из аргументов —NULL.mysql>
SELECT LEFT('foobarbar', 5);-> 'fooba'Эта функция безопасна для многобайтовых символов.
-
Возвращает длину строки
str, измеряемую в байтах. Многобайтовый символ учитывается как несколько байтов. Это означает, что для строки, содержащей пять 2-байтовых символов, функцияLENGTH()возвращает10, а функцияCHAR_LENGTH()возвращает5. ВозвращаетNULL, еслиstr—NULL.mysql>
SELECT LENGTH('text');-> 4ПримечаниеФункция OpenGIS пространственного расширения
Length()имеет имяST_Length()в MySQL. -
Читает файл и возвращает содержимое файла в виде строки. Для использования этой функции файл должен находиться на сервере, вы должны указать полное имя файла и иметь привилегию
FILE. Файл должен быть доступен для чтения сервером и его размер меньшеmax_allowed_packetбайтов. Если системная переменнаяsecure_file_privустановлена на непустое имя директории, файл, подлежащий загрузке, должен находиться в этой директории.Если файл не существует или недоступен для чтения из-за нарушения одного из вышеперечисленных условий, функция возвращает
NULL.Системная переменная
character_set_filesystemконтролирует интерпретацию имён файлов, указанных как литеральные строки.mysql>
UPDATE tSET blob_col=LOAD_FILE('/tmp/picture')WHERE id=1;
-
LOCATE(,substr,str)LOCATE(substr,str,pos)Первый синтаксис возвращает позицию первого вхождения подстроки
substrв строкеstr. Второй синтаксис возвращает позицию первого вхождения подстрокиsubstrв строкеstr, начиная с позицииpos. Возвращает0, еслиsubstrне содержится вstr. ВозвращаетNULL, если любой аргумент являетсяNULL.mysql>
SELECT LOCATE('bar', 'foobarbar');-> 4 mysql>SELECT LOCATE('xbar', 'foobar');-> 0 mysql>SELECT LOCATE('bar', 'foobarbar', 5);-> 7Эта функция является многобайтовой и чувствительна к регистру только в том случае, если хотя бы один аргумент является двоичной строкой.
-
Возвращает строку
strсо всеми символами, переведёнными в нижний регистр в соответствии с текущим отображением кодировки символов, илиNULL, еслиstrявляетсяNULL. Кодировка по умолчанию —utf8mb4.mysql>
SELECT LOWER('QUADRATICALLY');-> 'quadratically'LOWER()(иUPPER()) неэффективны при применении к двоичным строкам (BINARY,VARBINARY,BLOB). Чтобы выполнить преобразование регистра двоичной строки, сначала преобразуйте её в не двоичную строку, используя кодировку, подходящую для данных, хранящихся в строке:mysql>
SET @str = BINARY 'New York';mysql>SELECT LOWER(@str), LOWER(CONVERT(@str USING utf8mb4));+-------------+------------------------------------+ | LOWER(@str) | LOWER(CONVERT(@str USING utf8mb4)) | +-------------+------------------------------------+ | New York | new york | +-------------+------------------------------------+Для сортировок кодировок Unicode,
LOWER()иUPPER()работают в соответствии с версией алгоритма сортировки Unicode (UCA) в имени сортировки, если таковая имеется, и UCA 4.0.0, если версия не указана. Например,utf8mb4_0900_ai_ciиutf8mb3_unicode_520_ciработают в соответствии с UCA 9.0.0 и 5.2.0 соответственно, тогда какutf8mb3_unicode_ciработает в соответствии с UCA 4.0.0. См. Раздел 12.10.1, «Кодировки Unicode».Эта функция является многобайтовой.
LCASE(), используемый в представлениях, переписывается какLOWER(). -
Возвращает строку
str, дополненную слева строкойpadstrдо длиныlenсимволов. Еслиstrдлиннее, чемlen, возвращаемое значение сокращается доlenсимволов.mysql>
SELECT LPAD('hi',4,'??');-> '??hi' mysql>SELECT LPAD('hi',1,'??');-> 'h'Возвращает
NULL, если любой из его аргументов являетсяNULL. -
Возвращает строку
strс удалёнными ведущими пробелами. ВозвращаетNULL, еслиstrявляетсяNULL.mysql>
SELECT LTRIM(' barbar');-> 'barbar'Эта функция является многобайтовой.
-
Возвращает множество значений (строку, содержащую подстроки, разделённые символами
,), состоящее из строк, у которых соответствующий бит в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(1 | 4,'hello','nice',NULL,'world');-> 'hello' mysql>SELECT MAKE_SET(0,'a','b','c');-> '' -
MID(,str,pos)MID(,strFROMpos)MID(,str,pos,len)MID(strFROMposFORlen)MID(является синонимом дляstr,pos,len)SUBSTRING(.str,pos,len) -
Возвращает строковое представление восьмеричного значения
N, гдеN— число типа longlong (BIGINT). Это эквивалентноCONV(. ВозвращаетN,10,8)NULL, еслиNявляетсяNULL.mysql>
SELECT OCT(12);-> '14' -
OCTET_LENGTH()является синонимом дляLENGTH(). -
Если самый левый символ строки
strявляется многобайтовым символом, возвращает код этого символа, вычисленный из числовых значений его составляющих байтов по этой формуле:(1st byte code) + (2nd byte code * 256) + (3rd byte code * 256^2) ...
Если самый левый символ не является многобайтовым,
ORD()возвращает то же значение, что и функцияASCII(). Функция возвращаетNULL, еслиstrявляетсяNULL.mysql>
SELECT ORD('2');-> 50 -
POSITION(является синонимом дляsubstrINstr)LOCATE(.substr,str) -
Заключает строку в кавычки, чтобы получить результат, который может использоваться как правильно экранированное значение данных в операторе SQL. Строка возвращается, заключённая в одинарные кавычки, и с каждым экземпляром обратной косой черты (
\), одинарной кавычки ('), ASCIINULи Control+Z, предшествующих обратной косой черте. Если аргумент являетсяNULL, возвращаемым значением является слово “NULL” без заключительных одинарных кавычек.mysql>
SELECT QUOTE('Don\'t!');-> 'Don\'t!' mysql>SELECT QUOTE(NULL);-> NULLДля сравнения см. правила кавычек для литеральных строк и в C API в Разделе 11.1.1, «Строковые литералы», и .
-
Возвращает строку, состоящую из строки
str, повтореннойcountраз. Еслиcountменьше 1, возвращает пустую строку. ВозвращаетNULL, еслиstrилиcountявляетсяNULL.mysql>
SELECT REPEAT('MySQL', 3);-> 'MySQLMySQLMySQL' -
Возвращает строку
strсо всеми вхождениями строкиfrom_str, заменёнными строкойto_str.REPLACE()выполняет поискfrom_strс учётом регистра.mysql>
SELECT REPLACE('www.mysql.com', 'w', 'Ww');-> 'WwWwWw.mysql.com'Эта функция является многобайтовой. Она возвращает
NULL, если любой из её аргументов являетсяNULL. -
Возвращает строку
strс обратным порядком символов илиNULL, еслиstrявляетсяNULL.mysql>
SELECT REVERSE('abc');-> 'cba'Эта функция является многобайтовой.
-
Возвращает самые правые
lenсимволов из строкиstrилиNULL, если любой аргумент являетсяNULL.mysql>
SELECT RIGHT('foobarbar', 4);-> 'rbar'Эта функция является многобайтовой.
-
Возвращает строку
str, дополненную справа строкойpadstrдо длиныlenсимволов. Еслиstrдлиннееlen, возвращаемое значение укорачивается доlenсимволов. Еслиstr,padstrилиlenимеют значениеNULL, функция возвращаетNULL.mysql>
SELECT RPAD('hi',5,'?');-> 'hi???' mysql>SELECT RPAD('hi',1,'?');-> 'h'Эта функция безопасна для многобайтовых символов.
-
Возвращает строку
strсо всеми символами пробела в конце удалёнными.mysql>
SELECT RTRIM('barbar ');-> 'barbar'Эта функция безопасна для многобайтовых символов и возвращает
NULL, еслиstrимеет значениеNULL. -
Возвращает строку Soundex для
strилиNULL, еслиstrимеет значениеNULL. Две похожие по звучанию строки должны иметь идентичные строки Soundex. Стандартная строка Soundex имеет длину четыре символа, но функцияSOUNDEX()возвращает строку произвольной длины. Для получения стандартной строки Soundex можно использовать функциюSUBSTRING()над результатом. Все неалфавитные символы вstrигнорируются. Все международные алфавитные символы вне диапазона A-Z обрабатываются как гласные.ВажноПри использовании
SOUNDEX()необходимо учитывать следующие ограничения:Эта функция, в текущей реализации, предназначена для работы со строками только на английском языке. Строки на других языках могут не давать надёжных результатов.
Эта функция не гарантирует согласованных результатов со строками, использующими многобайтовые наборы символов, включая
utf-8. Смотрите ошибку #22638 для получения дополнительной информации.
mysql>
SELECT SOUNDEX('Hello');-> 'H400' mysql>SELECT SOUNDEX('Quadratically');-> 'Q36324'ПримечаниеЭта функция реализует оригинальный алгоритм Soundex, а не более популярную улучшенную версию (также описанную Д. Кнутом). Разница заключается в том, что оригинальная версия сначала отбрасывает гласные, а затем дубликаты, тогда как улучшенная версия сначала отбрасывает дубликаты, а затем гласные.
-
Это то же самое, что и
SOUNDEX(.expr1) = SOUNDEX(expr2) -
Возвращает строку, состоящую из
Nсимволов пробела, илиNULL, еслиNимеет значениеNULL.mysql>
SELECT SPACE(6);-> ' ' -
SUBSTR(,str,pos)SUBSTR(,strFROMpos)SUBSTR(,str,pos,len)SUBSTR(strFROMposFORlen)SUBSTR()является синонимом дляSUBSTRING(). -
SUBSTRING(,str,pos)SUBSTRING(,strFROMpos)SUBSTRING(,str,pos,len)SUBSTRING(strFROMposFORlen)Формы без аргумента
lenвозвращают подстроку из строкиstr, начиная с позицииpos. Формы с аргументомlenвозвращают подстроку длинойlenсимволов из строкиstr, начиная с позицииpos. Формы, использующиеFROM, соответствуют стандартной синтаксической конструкции SQL. Также можно использовать отрицательное значение дляpos. В этом случае начало подстроки определяетсяposсимволами с конца строки, а не с начала. Отрицательное значение может быть использовано дляposв любой форме этой функции. Значение 0 дляposвозвращает пустую строку.Для всех форм
SUBSTRING()позиция первого символа строки, из которой должна быть извлечена подстрока, считается1.mysql>
SELECT SUBSTRING('Quadratically',5);-> 'ratically' mysql>SELECT SUBSTRING('foobarbar' FROM 4);-> 'barbar' mysql>SELECT SUBSTRING('Quadratically',5,6);-> 'ratica' mysql>SELECT SUBSTRING('Sakila', -3);-> 'ila' mysql>SELECT SUBSTRING('Sakila', -5, 3);-> 'aki' mysql>SELECT SUBSTRING('Sakila' FROM -4 FOR 2);-> 'ki'Эта функция безопасна для многобайтовых символов. Она возвращает
NULL, если любой из её аргументов имеет значениеNULL.Если
lenменьше 1, результатом является пустая строка. -
SUBSTRING_INDEX(str,delim,count)Возвращает подстроку из строки
strдоcountвхождений разделителяdelim. Еслиcountположительно, возвращается всё слева от последнего разделителя (считая слева). Еслиcountотрицательно, возвращается всё справа от последнего разделителя (считая справа).SUBSTRING_INDEX()выполняет поискdelimс учётом регистра.mysql>
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);-> 'www.mysql' mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);-> 'mysql.com'Эта функция безопасна для многобайтовых символов.
SUBSTRING_INDEX()возвращаетNULL, если любой из аргументов имеет значениеNULL. -
Преобразует строковый аргумент в базу-64 кодировку и возвращает результат как строку символов с набором кодировки соединения и сортировкой. Если аргумент не является строкой, он преобразуется в строку перед преобразованием. Результатом будет
NULL, если аргумент имеет значениеNULL. Базы-64 кодированные строки могут быть декодированы с помощью функцииFROM_BASE64().mysql>
SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc'));-> 'JWJj', 'abc'Существуют различные схемы кодирования Base-64. Вот правила кодирования и декодирования, используемые
TO_BASE64()иFROM_BASE64():Кодирование для значения алфавита 62 —
'+'.Кодирование для значения алфавита 63 —
'/'.Кодированный вывод состоит из групп по 4 печатных символов. Каждые 3 байта входных данных кодируются с использованием 4 символов. Если последняя группа неполная, она дополняется
'='символами до длины 4.После каждых 76 символов кодированного вывода добавляется символ новой строки, чтобы разделить длинный вывод на несколько строк.
Декодирование распознаёт и игнорирует символ новой строки, возврат каретки, табуляцию и пробелы.
-
TRIM([{BOTH | LEADING | TRAILING} [,remstr] FROM]str)TRIM([remstrFROM]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'Эта функция безопасна для многобайтовых символов. Она возвращает
NULL, если любой из аргументов имеет значениеNULL. -
UCASE()является синонимом дляUPPER().UCASE(), используемое внутри представлений, переписывается какUPPER().
-
Для строкового аргумента
str,UNHEX(интерпретирует каждую пару символов в аргументе как шестнадцатеричное число и преобразует его в байт, представленный этим числом. Возвращаемое значение — двоичная строка.str)mysql>
SELECT UNHEX('4D7953514C');-> 'MySQL' mysql>SELECT X'4D7953514C';-> 'MySQL' mysql>SELECT UNHEX(HEX('string'));-> 'string' mysql>SELECT HEX(UNHEX('1267'));-> '1267'Символы в строковом аргументе должны быть допустимыми шестнадцатеричными цифрами:
'0'..'9','A'..'F','a'..'f'. Если аргумент содержит любые недопустимые шестнадцатеричные цифры или являетсяNULL, результатом будетNULL:mysql>
SELECT UNHEX('GG');+-------------+ | UNHEX('GG') | +-------------+ | NULL | +-------------+ mysql>SELECT UNHEX(NULL);+-------------+ | UNHEX(NULL) | +-------------+ | NULL | +-------------+Результат
NULLтакже может возникнуть, если аргумент функцииUNHEX()является столбцом типаBINARY, потому что значения заполняются0x00байтами при хранении, но эти байты не удаляются при извлечении. Например,'41'хранится в столбце типаCHAR(3)как'41 'и извлекается как'41'(с удаленным trailing-пробелом), поэтомуUNHEX()для значения столбца возвращаетX'41'. В противоположность этому,'41'хранится в столбце типаBINARY(3)как'41\0'и извлекается как'41\0'(с trailing-пробелом0x00байтом, не удалённым).'\0'не является допустимой шестнадцатеричной цифрой, поэтомуUNHEX()для значения столбца возвращаетNULL.Для числового аргумента
Nобратная функцияHEX(не выполняется функциейN)UNHEX(). Используйте функциюCONV(HEX(вместо этого. См. описаниеN),16,10)HEX().Если
UNHEX()вызывается из клиента mysql, двоичные строки отображаются в шестнадцатеричном формате, в зависимости от значения параметра--binary-as-hex. Дополнительную информацию об этом параметре см. в разделе 6.5.1, «mysql — Клиентская утилита командной строки MySQL». -
Возвращает строку
strсо всеми символами, преобразованными в верхний регистр в соответствии с текущим отображением набора символов, илиNULL, еслиstrявляетсяNULL. По умолчанию набор символов —utf8mb4.mysql>
SELECT UPPER('Hej');-> 'HEJ'См. описание
LOWER()для информации, которая также относится кUPPER(). Включая информацию о том, как выполнять преобразование регистра двоичных строк (BINARY,VARBINARY,BLOB), для которых эти функции неэффективны, и информация о свертке регистра для наборов символов Unicode.Эта функция безопасна для многобайтовых символов.
UCASE(), используемый внутри представлений, переписывается какUPPER(). -
WEIGHT_STRING(str[AS {CHAR|BINARY}(N)] [flags])Эта функция возвращает строку весов для входной строки. Возвращаемое значение — двоичная строка, представляющая значение сравнения и сортировки строки, или
NULL, если аргумент являетсяNULL. Имеет следующие свойства:Если
WEIGHT_STRING(=str1)WEIGHT_STRING(, тоstr2)(str1=str2str1иstr2считаются равными)Если
WEIGHT_STRING(<str1)WEIGHT_STRING(, тоstr2)(str1<str2str1сортируется передstr2)
WEIGHT_STRING()— функция отладки, предназначенная для внутреннего использования. Её поведение может меняться без предварительного уведомления между версиями MySQL. Она может использоваться для тестирования и отладки сортировок, особенно при добавлении нового типа сортировки. См. раздел 12.14, «Добавление сортировки к набору символов».Данный список кратко обобщает аргументы. Более подробные сведения приведены в обсуждении, следующем за списком.
str: Входная строковая выражение.ASпредложение: Необязательно; преобразует входную строку в указанный тип и длину.flags: Необязательно; не используется.
Входная строка
str— это строковое выражение. Если вход — строка без типа байтов (символьная), например, значение типаCHAR,VARCHARилиTEXT, возвращаемое значение содержит веса сортировки для строки. Если вход — двоичная строка (байтовая), например, значение типаBINARY,VARBINARYилиBLOB, возвращаемое значение такое же, как входное (вес каждого байта в двоичной строке — это значение байта). Если вход —NULL,WEIGHT_STRING()возвращаетNULL.Примеры:
mysql>
SET @s = _utf8mb4 'AB' COLLATE utf8mb4_0900_ai_ci;mysql>SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));+------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | AB | 4142 | 1C471C60 | +------+---------+------------------------+mysql>
SET @s = _utf8mb4 'ab' COLLATE utf8mb4_0900_ai_ci;mysql>SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));+------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | ab | 6162 | 1C471C60 | +------+---------+------------------------+mysql>
SET @s = CAST('AB' AS BINARY);mysql>SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));+------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | AB | 4142 | 4142 | +------+---------+------------------------+mysql>
SET @s = CAST('ab' AS BINARY);mysql>SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));+------+---------+------------------------+ | @s | HEX(@s) | HEX(WEIGHT_STRING(@s)) | +------+---------+------------------------+ | ab | 6162 | 6162 | +------+---------+------------------------+В предыдущих примерах используется функция
HEX()для отображения результатаWEIGHT_STRING(). Поскольку результат — двоичное значение,HEX()может быть особенно полезным, когда результат содержит непечатные символы, для отображения в печатном формате:mysql>
SET @s = CONVERT(X'C39F' USING utf8mb4) COLLATE utf8mb4_czech_ci;mysql>SELECT HEX(WEIGHT_STRING(@s));+------------------------+ | HEX(WEIGHT_STRING(@s)) | +------------------------+ | 0FEA0FEA | +------------------------+Для значений, отличных от
NULL, тип данных значения —VARBINARY, если его длина находится в пределах максимальной длины дляVARBINARY, в противном случае тип данных —BLOB.Предложение
ASможет быть использовано для преобразования входной строки в строку без типа байтов или строку типа байтов и для принудительного указания заданной длины:AS CHAR(преобразует строку в строку без типа байтов и дополняет её справа пробелами до длиныN)Nсимволов.Nдолжно быть не меньше 1. ЕслиNменьше длины входной строки, строка усекается доNсимволов. Предупреждение при усечении не выводится.AS BINARY(аналогичен, но преобразует строку в двоичную строку,N)Nизмеряется в байтах (а не символах), и дополнение использует0x00байтов (а не пробелов).
mysql>
SET NAMES 'latin1';mysql>SELECT HEX(WEIGHT_STRING('ab' AS CHAR(4)));+-------------------------------------+ | HEX(WEIGHT_STRING('ab' AS CHAR(4))) | +-------------------------------------+ | 41422020 | +-------------------------------------+ mysql>SET NAMES 'utf8mb4';mysql>SELECT HEX(WEIGHT_STRING('ab' AS CHAR(4)));+-------------------------------------+ | HEX(WEIGHT_STRING('ab' AS CHAR(4))) | +-------------------------------------+ | 1C471C60 | +-------------------------------------+mysql>
SELECT HEX(WEIGHT_STRING('ab' AS BINARY(4)));+---------------------------------------+ | HEX(WEIGHT_STRING('ab' AS BINARY(4))) | +---------------------------------------+ | 61620000 | +---------------------------------------+Предложение
flagsв настоящее время не используется.Если
WEIGHT_STRING()вызывается из клиента mysql, двоичные строки отображаются в шестнадцатеричном формате, в зависимости от значения параметра--binary-as-hex. Дополнительную информацию об этом параметре см. в разделе 6.5.1, «mysql — Клиентская утилита командной строки MySQL».
© 2025 Oracle
Licensed under the GPLv2 License.