Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Теоретичні відомості. Тема: Опрацювання символьних даних з використанням рядкових функцій






Практична роботи № 5

 

Тема: Опрацювання символьних даних з використанням рядкових функцій

Мета: Навчитися застосовувати рядкові функції в операторі SELECT для обробки символьної інформації в базах даних.

 

Теоретичні відомості

Рядки. Рядком є послідовність символів взятих або в одиничні лапки (`'') - апострофи, або в подвійні лапки (`" '). При використанні ANSI SQL допустимі тільки одинарні лапки. Приклад: 'a string', " another string".

Всередині рядка деякі послідовності символів мають спеціальне призначення. Кожна з цих послідовностей починається слешем (`\'), відомий як escape -символ або символ переходу. MySQL розпізнає такі escape-послідовності (табл. 1):

Таблиця 1 Послідовності символів спеціального призначення

Символ Пояснення
\0 Символ 0 (NUL) в ASCII коді.
\' Символ одиничної лапки (`'').
\" Символ подвійної лапки (`" ').
\b Поворот на один символ.
\n Символ нового рядка (перевід рядка).
\r Символ переводу каретки.
\t Символ табуляції.
\\ Символ оберненого слеша.
\% Символ відсотків `%'. Використовується для пошуку копій літералу `%' в контекстах, де вираз `%'
\`_' Символ підкреслювання `_'. Використовується для пошуку копій літералу `_' в контекстах, де вираз `_'

 

Функції для роботи з рядками. Для функцій, що працюють з позиціями в рядку, нумерація позицій починається з 1. В табл. 2 наведено функції для роботи з рядками.

Таблиця 2 Функції для роботи з рядками

Функція Що виконує Приклад
ASCII(str) Повертає значення ASCII-коду 1-го лівого символу str; 0 якщо str є пустим рядком; NULL, якщо str рівний NULL SELECT ASCII('2'); 50 SELECT ASCII(2); 50 SELECT ASCII('dx'); 100
CONV (N, from_base, to_base) Перетворює числа з одної системи числення в іншу. Повертає рядкове представлення числа N, перетвореного з системи числення з основою from_base в систему з основою to_base. Якщо хоч би один з аргументів рівний NULL, то повертається NULL. Аргумент N інтерпретується як ціле число, але може бути заданий і рядок. Мінімальне значення основи системи числення рівне 2, а максимальне - 36. Якщо аргумент to_base є від’ємним, то приймається, що N - число зі знаком. Інакше N єяк беззнакове число. SELECT CONV(" A", 16, 10); 10 SELECT CONV(-100, 2, -10); -4  
CHAR(N,...)   CHAR() інтерпретує аргументи як цілі числа і повертає рядок, з символів, що відповідають ASCII-коду цих чисел. Величини NULL пропускаються: SELECT CHAR(77, 121, 83, 81, '76'); 'MySQL' SELECT CHAR(77, 77.3, '77.3'); 'MMM'
CONCAT(str1, str2,...)   Повертає рядок, що є конкатенацією аргумент-тів. Якщо хоча би один з аргументів рівний NULL, повертається NULL. Приймає більше 2 аргу-ментів. Числовий аргумент перетворюється в еквівале-нтну рядкову форму: SELECT CONCAT('My', 'S', 'QL'); 'MySQL' SELECT CONCAT('My', NULL, 'QL'); NULL SELECT CONCAT(14.3); ’14.3’ SELECT CONCAT(14, 3); 143
LENGTH(str) OCTET_LENGTH (str) Повертає довжину рядка str:   SELECT LENGTH('text'); 4 SELECT OCTET_LENGTH ('text'); 4
BIT_LENGTH(str)   Повертає довжину рядка str в бітах: SELECT BIT_LENGTH ('text'); 32
LOCATE(substr, str)   Повертає позицію першого входження підрядка substr в рядок str. Якщо підрядок substr в рядку str відсутній, повертається 0: SELECT LOCATE(‘a’, eeearr’); 4  
POSITION(substr IN str)   Повертає позицію першого входження підрядка substr в рядок str. Якщо підрядок substr в рядку str відсутній, повертається 0: SELECT POSITION(‘er’, IN ’dferop’); 3  
LOCATE(substr, str, pos)   Повертає позицію першого входження підрядка substr в рядок str, починаючм з позиції pos. Якщо подрядок substr в рядку str відсутній, буде 0: SELECT LOCATE('bar', 'foobarbar', 5); 7  
INSTR(str, substr)   Повертає позицію першого входження підрядка substr в рядок str. SELECT INSTR('foobarbar', 'bar'); 4 SELECT INSTR('xbar', 'foobar'); 0
LPAD(str, len, padstr) Повертає рядок str, який доповнюється зліва рядком padstr, доки рядок str не досягне len символ-лів. Якщо рядок str дов-ший, ніж len, то він буде скорочений до len символів. SELECT LPAD('hi', 4, '?? '); '?? hi'  
BIN(N)   Повертає рядок, що пред-ставляє двійкове число N, де N - ціле число великого розміру (BIGINT). Якщо N рівно NULL, повертається NULL: mysql> SELECT BIN(12); -> '1100'  
OCT(N)   Повертає рядкове вісімкове значення числа N, де N - ціле число великого розміру. Якщо N =NULL, повертається NULL: mysql> SELECT OCT(12); -> '14'  
RPAD(str, len, padstr)   Повертає рядок str який доповнюється справа ряд-ком padstr, поки рядок str не досягне довжини len символів. Якщо рядок str довший, ніж len, то він бу-де скорочений до len симв. mysql> SELECT RPAD('hi', 5, '? '); -> 'hi??? '  
LEFT(str, len)   Повертає крайні зліва len символів з рядка str: SELECT LEFT('foobarbar', 5); -> 'fooba'
RIGHT(str, len)   Повертає крайні справа len символів з рядка str: SELECT RIGHT('foobarbar', 4); -> 'rbar'
SUBSTRING (str, pos, len) MID(str, pos, len) Повертає підрядок довжиною len з рядка str, починаючи від позиції pos. 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'
LTRIM(str)   Повертає рядок str з вида-леними початковими пропусками: SELECT LTRIM(' barbar'); -> 'barbar'
RTRIM(str)   Повертає рядок str з видаленими кінцевими пропусками: SELECT RTRIM('barbar '); -> 'barbar'
SPACE(N)   Повертає рядок, з N пропусків SELECT SPACE(6); -> ' '
REPLACE (str, from_str, to_str)   Повертає рядок str, в якому всі входження ряд-ка from_str замінені на to_str SELECT REPLACE ('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com'  
REPEAT(str, count)   Повертає рядок, що складається з рядка str, повтореним count раз. Якщо значення count < = 0, повертає пустий рядок. Повертає NULL, якщо str або count рівні NULL: SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL'  
REVERSE(str)   Повертає рядок str з оберненим порядком символів: SELECT REVERSE('abc'); -> 'cba'
INSERT (str, pos, len, newstr)   Повертає рядок str, в який підрядок починаючи з позиції pos, що має довжину len замінений на newstr: SELECT INSERT('Quadratic', 3, 4, 'What'); -> 'QuWhattic'  
ELT (N, str1, str2, str3,...)   Повертає str1, якщо N = 1, str2, якщо N = 2, і т. д. Якщо N менше, ніж 1 або більше, ніж число аргументів, повертається NULL. SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo'); -> 'ej' SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo'); -> 'foo'
FIELD (str, str1, str2, str3,...)   Повертає індекс рядка str в списку str1, str2, str3,.... Якщо рядок str не знай-дений, повертається 0. SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 2 SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo'); -> 0
FIND_IN_SET(str, strlist)   Повертає від 1 до N, якщо рядок str присутній в списку strlist, що складається з N підрядків. Список рядків є рядок, що складається з підрядків, розділених символами `, '. SELECT FIND_IN_SET('b', 'a, b, c, d'); -> 2  
LCASE(str) LOWER(str)   Повертає рядок str, в якому всі символи пере-ведені в нижній регістр mysql> SELECT LCASE('QUADRATICALLY'); -> 'quadratically'
UCASE(str) UPPER(str)   Повертає рядок str, в якому всі символи пере-ведені в верхній регістр mysql> SELECT UCASE('Hej'); -> 'HEJ'  
LOAD_FILE (file_name)   Читає заданий файл і повертає його вмістиме в виді рядка. Даний файл повинен знаходитися на сервері, повинен бути вказаний повний путь до цьому файлу. Файл повинен бути відкритий для читання для всіх. Якщо файл не існує або не може бути прочитаний, то функція повертає NULL mysql> UPDATE tbl_name SET blob_column=LOAD_FILE(" /tmp/picture") WHERE id=1;  

 

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

 

mysql> SELECT 1+" 1";

-> 2

mysql> SELECT CONCAT(2, ' test');

-> '2 test'

 

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

Порівняння рядків. Функція STRCMP(expr1, expr2). Функція STRCMP() повертає: 0, якщо рядки ідентичні, -1 - якщо перший аргумент менший від другого (в відповідності з наявним порядком сортування), і 1 - в решту випадках:

mysql> SELECT STRCMP('text', 'text2');

-> -1

mysql> SELECT STRCMP('text2', 'text');

-> 1

mysql> SELECT STRCMP('text', 'text');

-> 0

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.