MySQL имеет много типов данных для хранения строковых данных в таблице. VARCHAR и TEXT — два из них. Оба могут хранить максимум 65535 символов, но между этими типами данных, описанными в этом руководстве, есть некоторые различия.
Архив метки: MySQL
Как разделить строку в MySQL
В MySQL существует множество встроенных функций для выполнения различных типов операций со строковыми данными. Иногда требуется разделить строковые данные на основе любого разделителя при выполнении запроса SELECT. Функция SUBSTRING_INDEX() используется для разделения строковых данных, полученных запросом, на основе определенного разделителя. В этой статье обсуждается способ использования этой функции в запросе SELECT.
Синтаксис SUBSTRING_INDEX():
Функция SUBSTRING_INDEX() принимает три аргумента и возвращает значение подстроки. Синтаксис функции SUBSTRING_INDEX() представлен ниже:
string SUBSTRING_INDEX(string, delimiter, count);
- Первый аргумент — это строковое значение, которое будет разделено.
- Второй аргумент — это разделитель, который будет использоваться для разделения строкового значения.
- Третий аргумент определяет количество вхождений разделителя. Оно может быть положительным или отрицательным. Если значение третьего аргумента положительное, то значение подстроки будет возвращено слева. Если значение третьего аргумента отрицательное, значение подстроки будет возвращено справа.
Разделить строку с помощью функции SUBSTRING_INDEX():
В этой части статьи показаны различные варианты использования функции SUBSTRING_INDEX().
Пример 1: Разделить строку на основе положительного значения счетчика
В этой части руководства показаны четыре варианта использования функции SUBSTRING_INDEX() с положительным значением счетчика и другим разделителем.
Запустите следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 1, и пробелом в качестве разделителя. Основная строка «Welcome to AndreyEx» состоит из трех слов. Таким образом, в выводе будет напечатано первое слово строки.
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', ' ', 1);
Запустите следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 2, и символом «o» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит два раза символ «o». Второй раз «o» появилось во втором слове «to». Таким образом, вывод будет «Welcome to».
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'o', 2);
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'to', 1);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с положительным значением счетчика, 3, и строкой ‘to’ в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит строку «to» только один раз. Таким образом, основная строка будет возвращена на выходе.
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'to', 3);
Пример 2: Разделить строку на основе отрицательного значения счетчика
В этой части руководства показаны три варианта использования функции SUBSTRING_INDEX() с отрицательным значением счетчика и другим разделителем, которые были показаны в этой части статьи.
Выполните следующую инструкцию SELECT, в которой используется функция SUBSTRING_INDEX() с отрицательным значением счетчика, -1, и пробелом в качестве разделителя. Основная строка «Welcome to AndreyEx» состоит из трех слов. Итак, последнее слово строки будет напечатано в выводе для отрицательного значения:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', ' ', -1);
Выполните следующую инструкцию SELECT, которая использует функцию SUBSTRING_INDEX() с отрицательным значением счетчика, -2, и символом «e» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит символ «e» только один раз. Таким образом, вывод будет «lcome toAndreyEx »:
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'e', -2);
Выполните следующую инструкцию SELECT, в которой используется функция SUBSTRING_INDEX() с отрицательным значением счетчика, -2, и строкой «in» в качестве разделителя. Основная строка «Welcome to AndreyEx» содержит два раза строку «yE». Таким образом, в выводе будет возвращена подстрока ‘ Andrex’.
SELECT SUBSTRING_INDEX('Welcome to AndreyEx', 'in', -2);
Пример 3: Разделить строковое значение таблицы
Вы должны создать таблицу с данными в базе данных MySQL, чтобы проверить функцию SUBSTRING_INDEX() для данных таблицы.
Выполните следующий запрос, чтобы создать базу данных с именем test_db:
CREATE DATABASE test_db;
Выполните следующую инструкцию, чтобы использовать базу данных test_db в качестве текущей базы данных:
USE test_db;
Выполните следующий запрос, чтобы создать таблицу клиентов с четырьмя полями:
CREATE TABLE customers( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, email VARCHAR(50), contact_no VARCHAR(15));
Выполните следующий запрос, чтобы вставить три записи в таблицу клиентов :
INSERT INTO `customers` (`id`, `name`, `email`, `contact_no`) VALUES
('001', 'Andrey Ex', 'info@andreyex.ru', '+8 000 00 00 000'),
('002', 'Maxs Destroyer', 'Max***@yandex.com', '+8 000 00 00 000'),
('003', 'Alex Annihilator', 'Alex***@yandex.com', '+8 000 00 00 000');
SELECT * FROM customers;
Поле имени содержит имя и фамилию. Поле contact_no содержит номер мобильного телефона с кодом страны. Имя и номер мобильного телефона без кода страны можно прочитать из таблицы с помощью функции SUBSTRING_INDEX(). В следующем запросе SELECT первое имя будет получено с использованием разделителя пробела и 1 в качестве значения счетчика в функции SUBSTRING_INDEX(), а номер мобильного телефона без кода страны будет получен с использованием кода страны в качестве разделителя и -1 в качестве значения счетчика в функции SUBSTRING_INDEX():
SELECT id, SUBSTRING_INDEX(name,' ',1) AS `First Name`, email, SUBSTRING_INDEX(contact_no,'+88',-1) AS Phone FROM customers;
Вывод:
Различные варианты использования функции SUBSTRING_INDEX() с использованием разных значений аргументов обсуждались в этом руководстве с использованием нескольких примеров. Мы надеемся, что примеры в этой статье помогут пользователям MySQL узнать об использовании функции SUBSTRING_INDEX() и правильно применить ее в запросе SELECT.
MySQL 8 — Предоставление прав на БД
В предыдущих версиях MySQL создание пользователя и предоставление ему прав на базу выполнялось командой, использующей сочетание GRANT и IDENTIFIED BY. В восьмой версии этот синтаксис выдает ошибку:
SQL. Сборник рецептов

Книга Энтони Молинаро «SQL. Сборник рецептов» предназначена тем, кто уже знаком с основами языка запросов SQL и хочет повысить свой профессиональ! ный уровень. Она будет полезна и экспертам SQL, поскольку автор предлагает варианты решения задач для разных СУБД: DB2, Oracle, PostgreSQL, MySQL и SQL Server. Если вы постоянно работаете с SQL на одной платформе, то, воз! можно, найдете в рецептах более эффективное решение на другой. Вы научи! тесь использовать SQL для решения более широкого спектра задач – от опера! ций внутри баз данных до передачи данных по сети в приложения. Для этого достаточно открыть книгу на странице с интересующим вас рецептом.
2021-10-24T09:03:53Книги и Курсы
Как усечь таблицу в MySQL
На этом этапе вам может потребоваться очистить таблицу и все хранящиеся в ней данные, сохранив структуру таблицы. В таком сценарии предложение усечения MySQL является очень эффективным запросом.
В этой статье показано, как использовать оператор TRUNCATE в MySQL для удаления всех данных в таблице базы данных.
Оператор TRUNCATE является частью операторов языка определения данных. Однако его функции аналогичны оператору DELETE, что делает его частью языка манипулирования данными.
Чтобы использовать оператор TRUNCATE, у вас должны быть привилегии DROP в базе данных.
Особенности Truncate
Ниже приведены некоторые характерные особенности оператора TRUNCATE, которые отличают его от оператора DELETE:
- Операцию усечения нельзя откатить, поскольку она выполняет неявную фиксацию.
- Он работает, удаляя таблицу и воссоздавая ее, сохраняя ее структуру, но не данные.
- Truncate поддерживает поврежденные таблицы, удаляя все данные и восстанавливая пустую таблицу.
- Он не вызывает никаких триггеров удаления.
- Сохраняет разбиение таблицы
- Оператор TRUNCATE не возвращает никакой информации о затронутых строках — это означает, что возвращаемое значение равно 0.
Основное использование
Общий синтаксис использования оператора TRUNCATE:
TRUNCATE TABLE tbl_name;
Пример использования
Давайте посмотрим на пример использования оператора TRUNCATE.
В этом примере мы будем использовать таблицу сотрудников, представленную в ресурсе ниже:
https://dev.mysql.com/doc/index-other.html
Сначала выберите несколько значений из таблицы, чтобы убедиться, что она не пуста:
SELECT * FROM employees LIMIT 10;
Теперь, когда мы подтвердили, что таблица заполнена данными, давайте попробуем усечь таблицу следующим образом:
SET FOREIGN_KEY_CHECKS = FALSE; TRUNCATE TABLE employees;
Сначала мы устанавливаем для переменной FOREIGN_KEY_CHECK значение False, потому что оператор TRUNCATE не работает, если таблица содержит ограничения из других таблиц.
После того, как мы удалили возможность проверки ограничений из других таблиц, мы вызываем оператор TRUNCATE для удаления данных.
Вы можете подтвердить, щелкнув выбрать:
SELECT * FROM employees;
Заключение
В этой статье вы узнали, как использовать оператор TRUNCATE в MySQL для удаления данных из таблицы. Надеемся, этот урок был вам полезен.
MySQL. Просмотр запросов в реальном времени
В Linux существует команда «watch», которая позволяет запускать команды, стоящие после неё с определённым интервалом. Так можно почти в реальном времени отследить значения в выводе. К сожалению, иногда её неудобно или невозможно использовать для просмотра запросов MySQL. Но это ещё можно делать через mysqladmin.
