ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.10.2024
Просмотров: 12
Скачиваний: 0
Лабораторна робота 11
Тема: Робота з рядками.
Мета: розглянути команди MySql, призначені для обробки рядкових даних.
Теоретична частина
Рядкові функції
В цій роботі розглянемо команди MySql, призначені для обробки рядкових даних.
ASCII(рядок)
ORD(рядок)
Повертає числове значення першого символу рядка рядок. Повертає 0, якщо рядок є порожнім. Повертає NULL, якщо рядок рівний NULL. ASCII( ) працює з символами в діапазоні кодів від 0 до 255.
mysql> SELECT ASCII('2');
-> 50
mysql> SELECT ASCII(2);
-> 50
mysql> SELECT ASCII('dx');
-> 100
BIN(N)
Повертає рядкове представлення двійкового значення N, де N - довге ціле (BIGINT). Це еквівалентно CONV(N, 10, 2). Повертає NULL, якщо N рівне NULL.
mysql> SELECT BIN(12);
-> '1100'
ВIT_LENGTH(рядок)
Повертає довжину рядка рядок в бітах.
mysql> SELECT BIT_LENGTH('text');
-> 32
CHAR(iV...)
Інтерпретує аргументи як цілі і повертає рядок, що складається з символів з кодами, заданими цими цілими. Значення NULL пропускаються.
mysql> SELECT CHAR(77,121,83,81,'76');
-> 'MySQL'
mysql > SELECT CHAR(77,77.3,'77.3');
-> 'МММ'
CHAR_LENGTH(рядок)
CHARACTER_LENGTH(рядок)
Повертає довжину рядка рядок, виміряну в символах. Багатобайтні символи вважаються одним. Це значить, що для рядка, що складається з п'яти двобайтових символів, LENGTH() поверне 10, тоді як CHAR_LENGTH(' ') поверне 5.
COMPRESS(рядок_для_стискання)
Стискає рядок. Ця функція вимагає, щоб MySQL був скомпільований з бібліотекою підтримки стиснення, такий як zlib. Інакше значення, що повертається, завжди буде NULL.
Вміст стислого рядка зберігається таким чином:
Порожній рядок зберігається як порожній рядок.
Непорожній рядок зберігається як чотирьохбайтова довжина нестислого рядка (молодший байт йде першим), за яким слідує стислий рядок. Якщо рядок завершується пропуском, додається додатковий символ ' . ' щоб уникнути усікання завершальних пропусків, яке має місце при збереженні в стовпцях CHAR або VARCHAR. (Використовувати для збереження стислих рядків стовпці CHAR або VARCHAR не рекомендується. Натомість краще застосовувати стовпці BLOB).
CONCAT(рядок1, рядок2 ...)
Повертає рядок, який складається із зчеплених аргументів. Повертає NULL, якщо будь-який з аргументів рівний NULL. Приймає один або більш аргументів. Числовий аргумент перетвориться в еквівалентну рядкову форму.
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
CONCAT_WS(роздільник, рядок1, рядок2 ...)
CONCAT_WS означає "Concat With Separator" ("CONCAT з роздільником") і є особливою формою CONCAT(). Перший аргумент - це роздільник для решти аргументів. Роздільник додається між рядками, що сполучаються. Роздільник може бути рядком, як і решта аргументів. Якщо роздільник рівний NULL, результат теж рівний NULL. Функція пропускає будь-які аргументи NULL після роздільника.
mysql> SELECT CONCAT_WS( ',', 'First name', 'Second name', 'Last Name');
-> 'First name,Second name,Last Name'
CONV(N, основа_початкова, основа_кінцева)
Конвертує числа між різними системами обчислення. Повертає рядкове представлення числа N, перетворене з системи обчислення з підставою основа_початкова в систему обчислення з підставою основа_кінцева. Повертає NULL, якщо будь-який з аргументів рівний NULL. Аргумент N інтерпретується як ціле, але може указуватися і як ціле, і як рядок. Мінімальна основа системи обчислення - 2, максимальна - 36. Якщо значення основа_кінцева негативне, N розглядається як ціле із знаком. Інакше N вважається беззнаковим цілим. CONV( ) працює з 64-розрядною точністю.
mysql> SELECT CONV('а',16,2);
-> '1010'
mysql> SELECT CONV('6E',18,8);
-> '172'
mysql> SELECT CONV(-17,10, -18);
-> '-H'
mysql> SELECT CONV(10+'10'+'10'+0xa,10,10);
-> '40'
ELT(N, рядок1, рядок2, рядок3 ...)
Повертає рядок1, якщо N = 1, рядок2, якщо N = 2, і так далі. Повертає NULL, якщо N менше 1 або більше кількості аргументів. ELT() - це доповнення FIELD().
mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> SELECT ELT(3, 'ej', 'Heja', 'hej', 'foo');
-> 'hej'
FIELD(рядок, рядок1, рядок2, рядок3 ...)
Повертає позицію входження аргументу рядок в список рядок1, рядок2, рядок3 ... Повертає 0, якщо входження не знайдено.
FIELD() - це доповнення ELT().
mysql> SELECT FIELD('еj', 'Hej', 'ej', 'Heja', 'hej1', 'foo');
- > 2
FIND_IN_SET(рядок, список_рядків)
Повертає значення від 1 до N, якщо рядок знаходиться в списку рядків список_рядків, що складається з N підрядків. Список рядків - це рядок, що складається з підрядків, розділених символом ',' . Повертає 0, якщо рядок не входить в список рядків, або якщо список_рядків — порожній рядок.
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
HEX(Ч_або_С)
Якщо Ч_ілі_С - число, повертає рядкове представлення шістнадцяткового значення N, де N - довге ціле ( BIGINT ). Це еквівалентно CONV(N,10,16).
Якщо Ч_ілі_С - рядок, то повертається шістнадцяткова рядок Ч_ілі_С, в якому кожний символ перетворений в два шістнадцяткові розряди.
mysql> SELECT HEX(255);
-> 'FF'
mysql> SELECT HEX('abc');
-> '616263'
INSERT(рядок, позиція, довжина, новий_рядок)
Повертає рядок рядок, в якому підрядок завдовжки довжина, що починається з позиції позиція, замінюється рядком новий_рядок.
mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic'
INSTR(рядок, підрядок)
Повертає позицію першого входження підрядка підрядок в рядок рядок. Це те ж саме, що двуаргументна форма LOCATE( ), тільки аргументи переставлені місцями.
mysql> SELECT INSTR('foobarbar', 'bar');
-> 4
mysql> SELECT INSTR('xbar', 'foobar');
-> 0
LEFT(рядок, довжина)
Повертає перші довжина символів рядка рядок.
mysql> SELECT LEFT('foobarbar', 5);
-> 'fooba'
LENGTH(рядок)
Повертає довжину рядка рядок в байтах.
mysql> SELECT LENGTH('text');
-> 4
LOAD_FILE(імя_файла)
Читає файл і повертає його вміст у вигляді рядка. Файл повинен знаходитися на сервері і до нього повинен указуватися повний шлях. Крім того, необхідно мати привілей FILE. Файл повинен бути доступний по читанню всім, і мати розмір менш max_allowed_packet байт.
Якщо файл не існує або не може бути прочитаний, функція повертає NULL.
LOCATE(підрядок, рядок)
LOCATE(підрядок, рядок, позиція)
POSITION(підрядок IN рядок)
Перший синтаксис повертає позицію першого входження підрядка підрядок в рядок рядок. Другий синтаксис повертає позицію першого входження підрядка підрядок в рядок рядок, починаючи з позицією позиція. Якщо підрядок не входить в рядок, повертається 0.
mysql> SELECT LOCATE('bar', 'foobarbar');
-> 4
mysql> SELECT LOCATE('xbar', 'foobar');
-> 0
mysql> SELECT LOCATE('bar', 'foobarbar',5);
-> 7
LOWER(рядок)
LCASE(рядок)
Повертає рядок рядок, в якому всі символи приведені до нижнього регістра відповідно до поточного набору символів.
mysql> SELECT LOWER('QUADRATICALLY');
-> 'quadratically'
LPAD(рядок, довжина, рядок-заповнювач).
Повертає рядок рядок, додавши зліва рядком рядок-заповнювач до довжини довжина. Якщо рядок довше, ніж вказано в аргументі довжина, повертається значення, усічене до довжина символів.
mysql> SELECT LPAD('hi',4,'*');
-> '**hi'
mysql> SELECT LPAD('hi',1,'*');
-> 'h'
LTRIM(рядок)
Повертає рядок рядок з видаленими провідними пропусками.
mysql> SELECT LTRIM(' barbar');
-> 'barbar'
OCT(N)
Повертає рядкове представлення вісімкового значення N, де N - довге ціле.
Це еквівалент CONV(N,10,8).
Повертає NULL, якщо N рівне NULL.
mysql> SELECT ОСТ(12);
-> '14'
QUOTE(рядок)
Бере рядок в лапки, щоб результат можна було використовувати як допустиме значення в SQL-операторах. Рядок оточується одинарними лапками, а всі входження в неї одинарної лапки - зворотною косою межею ("\").
mysql> SELECT QUOTE("Don't");
-> 'Don\'t'
REPEAT(рядок, кількість)
Повертає рядок, що складається з аргументу рядок, повтореного кількість раз.
mysql> SELECT REPEAT('MySQL', 3);
-> 'MySQLMySQLMySQL'
REPLACE(рядок, рядок_2, рядок_3)
Повертає рядок рядок, в якому всі входження рядок_2 замінені на рядок_3.
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
REVERSE(рядок)
Повертає рядок рядок із зворотним порядком символів.
mysql> SELECT REVERSE('abc');
-> 'cba'
RIGHT(рядок, довжина)
Повертає довжину правих символів рядка рядок.
mysql> SELECT RIGHT('foobarbar', 4);
-> 'rbar'
RPAD(рядок, довжина, рядок-заповнювач)
Повертає рядок рядок, доповнений справа рядком рядок-заповнювач до довжини довжина. Якщо рядок довше, ніж довжина, повертається значення, усічене до довжина символів.
mysql> SELECT RPAD('hi',5,'?');
-> 'hi???'
mysql> SELECT RPAD('hi',1,'?');
-> 'h'
RTRIM(рядок)
Повертає рядок рядок з видаленими завершальними пропусками.
mysql> SELECT RTRIM('barbar ');
-> 'barbar'
SOUNDEX(рядок)
Повертає рядок, що описує звучання (soundex) рядка рядок. Два рядки, які вимовляються майже однаково, повинні мати ідентичні рядки звучання.
mysql> SELECT SOUNDEX('Hello');
-> 'H400'
mysql> SELECT SOUNDEX('Quadratically' );
-> 'Q36324'
SPACE(N)
Повертає рядок, що складається з N пропусків.
mysql> SELECT SPACE(6);
-> ' '
SUBSTRING(рядок, позиція)
SUBSTRING(рядок FROM позиція)
SUBSTRING(рядок, позиція, довжина)
SUBSTRING(рядок FROM позиція FOR довжина)
Форми без аргументу довжина повертають підрядок рядка рядок, починаючи з позиції позиція. Форми з аргументом довжина повертають підрядок рядка рядок завдовжки довжина символів, починаючи з позицією позиція. Форми, використовуючі FROM, представляють стандартний синтаксис SQL.
mysql> SELECT SUBSTRING('Quadratically',5);
-> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
SUBSTRING_INDEX(рядок, роздільник, кількість)
Повертає підрядок рядка рядок до входження номер кількість роздільника роздільник. Якщо значення кількість позитивна, повертається все, що лежить зліва від фінального роздільника (вважаючи зліва направо). Якщо значення кількість негативна, повертається все, що лежить праворуч від фінального роздільника (обраховуючи справа наліво).
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
TRIM([[BOTH | LEADING | TRAILING] [рядок,_що_видаляється] FROM] рядок)
Повертає рядок рядок з видаленими префіксами і/або суфіксами рядок,_що_видаляється. Якщо не вказане ні BOTH, ні LEADING, ні TRAILING, мається на увазі 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'
UNCOMPRESS(рядок_для_розпакування)
Розпаковує рядок, стислий функцією COMPRESS(). Якщо аргумент не є упакованим рядком, повертається NULL.
mysql> SELECT UNCOMPRESS(COMPRESS('any string'));
-> 'any string'
mysql> SELECT UNCOMPRESS('any string');
-> NULL
UNHEX(рядок)
Виконує дію, протилежну функції HEX(рядок). Тобто, інтерпретує кожну пару шістнадцяткових цифр аргументу як число і перетворить в символ, представлений цим числом. Символи результату повертаються у вигляді бінарного рядка.