MySQL STRING FUNCTION


Для роботи з рядками в MySQL визначено ряд вбудованих функцій:

CONCAT : об'єднує рядки. Як параметр приймає від 2-х і більше рядків, які треба з'єднати:

SELECT CONCAT('Tom', ' ', 'Smith')  -- Tom Smith

При цьому в функцію можна передавати не тільки безпосередньо рядки, а й числа, дати - вони будуть перетворюватися в рядки і також об'єднуватися. CONCAT_WS : також об'єднує рядки, але в якості першого параметра приймає роздільник, який буде з'єднувати рядки:

SELECT CONCAT_WS(' ', 'Tom', 'Smith', 'Age:', 34)  -- Tom Smith Age: 34

LENGTH : повертає кількість символів в рядку. Як параметр у функцію передається рядок, для якої треба знайти довжину:

SELECT LENGTH('Tom Smith')  -- 9

L[strong]TRIM [/strong] : видаляє початкові пробіли з рядка. Як параметр приймає рядок:

SELECT LTRIM('  Apple')

RTRIM : видаляє кінцеві пробіли з рядка. Як параметр приймає рядок:

SELECT RTRIM(' Apple    ')

TRIM : видаляє початкові і кінцеві пробіли з рядка. Як параметр приймає рядок:

SELECT TRIM('  Tom Smith   ')

За допомогою додаткового оператора можна задати де имеено видалити пробіли: BOTH(на початку і в кінці), TRAILING(тільки в кінці), LEADING(тільки на початку):

SELECT TRIM(BOTH FROM '  Tom Smith   ')

LOCATE (find, search [, start]) : повертає позицію першого входження підрядка find в рядок search. Додатковий параметр start дозволяє встановити позицію в рядку search, з якої починається пошук підрядка find. Якщо підрядок search не знайдено, то повертається 0:

SELECT LOCATE('om', 'Tom Smith');       -- 2
SELECT LOCATE('m', 'Tom Smith');        -- 3
SELECT LOCATE('m', 'Tom Smith', 4);     -- 6
SELECT LOCATE('mig', 'Tom Smith');      -- 0

LEFT : вирізає з початку рядка певну кількість символів. Перший параметр функції - рядок, а другий - кількість символів, які треба вирізати спочатку рядки:

SELECT LEFT('Apple', 3) -- App

RIGHT : вирізає з кінця рядка певну кількість символів. Перший параметр функції - рядок, а другий - кількість символів, які треба вирізати спочатку рядки:

SELECT RIGHT('Apple', 3)    -- ple

SUBSTRING (str, start [, length]) : вирізає з рядка str підрядок, починаючи з позиції start. Третій необов'язковий параметр передає кількість вирізаних символів:

SELECT SUBSTRING('Galaxy S8 Plus', 8),          -- S8 Plus
(SELECT SUBSTRING('Galaxy S8 Plus', 8, 2) );    -- S8

SUBSTRING_INDEX (str, delimiter, count) : вирізає з рядка str підрядок. Параметр delimiter визначає роздільник усередині рядка. А параметр count визначає, до якого входження роздільник треба вирізати подстроку. Якщо count позитивний, то підрядок вирізається з початку, якщо count негативний, то з кінця рядка str:

SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 1),           -- Galaxy
(SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', 2) ),        -- Galaxy S8
(SELECT SUBSTRING_INDEX('Galaxy S8 Plus', ' ', -2) );           -- S8 Plus

REPLACE (search, find, replace) : замінює в рядку find подстроку search на подстроку replace. Перший параметр функції - рядок, другий - підрядок, яку треба замінити, а третій - підрядок, на яку треба замінити:

SELECT REPLACE('Galaxy S8 Plus', 'S8 Plus', 'Note 8')   -- Galaxy Note 8

INSERT (str, start, length, insert) : вставляє в рядок str, замінюючи length символів з позиції start підрядком insert. Перший параметр функції - рядок, другий - позиція, з якої треба замінити, третій - скільки символів з позиції start треба замінити вставляється підрядком, четвертий параметр - вставляється подстрока:

SELECT INSERT('Galaxy S9', 8, 3, 'Note 9');   -- Galaxy Note 9

REVERSE : перевертає рядок навпаки:

SELECT REVERSE('123456789') -- 987654321

LOWER : переводить рядок в нижній регістр:

SELECT LOWER('Apple')   -- apple

UPPER : переводить рядок у верхній регістр

SELECT UPPER('Apple')   -- APPLE

SPACE : повертає рядок, яка містить певну кількість пропусків REPEATE (str, count) : повертає рядок, яка містить певну кількість повторів подстроки str. Кількість повторів задається через параметр count.

SELECT REPEAT('ab', 5);   -- ababababab

LPAD (str, length, pad) : додає зліва від рядка str кілька символів, які визначені в параметрі pad. Кількість додаються символів обчислюється за формулою length - LENGTH(str). Якщо параметр length менше довжини рядка str, то цей рядок буде скорочуватися до length символів.

SELECT LPAD('Tom Smith', 13, '*');   -- ****Tom Smith

RPAD (str, length, pad) : додає праворуч від рядка str кілька символів, які визначені в параметрі pad. Кількість додаються символів обчислюється за формулою length - LENGTH(str). Якщо параметр length менше довжини рядка str, то цей рядок буде скорочуватися до length символів.

SELECT RPAD('Tom Smith', 13, '*');   -- Tom Smith****

Наприклад, візьмемо таблицю:

CREATE TABLE Products
(
    Id INT AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(30) NOT NULL,
    Manufacturer VARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price DECIMAL NOT NULL
);

І при отриманні даних застосуємо рядкові функції:

SELECT UPPER(LEFT(Manufacturer,2)) AS Abbreviation,
       CONCAT(ProductName, ' - ',  Manufacturer) AS FullProdName
FROM Products
ORDER BY Abbreviation

Наш партнер:
beta test mp3 playlist downloader