-
MySQL. Перевод строки в нижний\верхний регистр.
Никогда нельзя забывать о регистрозависимости и возможности случайных недопонимании при работе со строками. Это касается и Баз Данных, и языков программирования и т.д. Ниже приведу две функции MySQL для приведения текста в нижний и верхний регистр. Верхний регистр: функция UPPER SELECT UPPER(‘Hello’); — HELLO Нижний регистр: функция LOWER SELECT LOWER(‘HeLlO’); — hello
-
MySQL. Как перевести дату со строкового поля в формат даты?
Иногда дата в Базе Данных хранится в простом текстовом поле, а на в формате datetime. Причин этому может быть много — архитектура и потребности везде свои. Но как сортировать таблицу по дате и времени, если они в простом текстовом формате? Для этой задачи следует воспользоваться встроенной функцией MySQL STR_TO_DATE. Приведу пример: mysql> select str_to_date(«31/07/1990″,»%d/%m/%Y»); +—————————————+…
-
MySQL. Как сделать заглавной только первую букву?
Функции и хаки работы с MySQL иногда очень облегчают жизнь. Об одном из таких хаков я расскажу в этой заметке. Речь пойдет о хаке, который позволяет сделать со строки «ПРИВЕТ» — «Привет». Т.е. независимо от регистра входной строки получить первую заглавную букву. Итак, код ниже: SELECT CONCAT( UPPER( LEFT( `text` , 1 ) ) ,…
-
MySQL. Как сделать дамп и сразу импортировать его на удаленный сервер?
Очень редко — даже может быть один раз в жизни 🙂 — бывает необходимость сделать бекап и тут же его импортировать. Т.е. не делать файл выгрузки, который после будет импортирован. Подобная ситуация может возникнуть при работе с критично большими объемами БД или ограниченном месте на сервере, которое не позволяет сделать бекап. Причин может быть много.…
-
MySQL. Оператор CAST. Преобразование типов.
Часто простые задачи вызывают много проблем. Например, если Вам надо вывести среднюю стоимость товаров с БД строкой — «Средняя цена — …..». Здесь мы получим ошибку — т.к. следует использовать приведение (преобразование) типов. Итак, простой интуитивный запрос выглядит так: SELECT ‘Средняя цена = ‘+AVG(price) FROM products Но тут мы, как раз, и столкнемся с ошибкой.…
-
MySQL. Выборка записей за сегодня-вчера/неделю/месяц
Выборка данных за определенный период очень частая задача, которая решается крайне просто. Среди множества вариантов решения в сети меня лично прильщает или использование INTERVAL или применение следующих методов. За сегодня SELECT * FROM TABLE WHERE tc_date >= CURDATE() За вчера SELECT * FROM TABLE WHERE tc_date >= (CURDATE()-1) AND tc_date < CURDATE() За неделю SELECT…
-
MySQL. Использование REPLACE
Работа со строками в MySQL продумана достаточно хорошо и имеет ряд очень полезных функций. Одной из таких функций в является функция REPLACE, о которой пойдет речь ниже. Итак, приведу простой пример, с которого все станет на места. UPDATE `some_table` SET `some_field`= REPLACE(`some_field`, ‘..’, ‘. . .’); Думаю тут все передльно ясно. Мы обновляем все поля,…
-
MySQL. Как выполнить множественный UPDATE?
Множественный запрос очень часто ускоряет выполнение запросов, если Вам следует выполнить много попыток обновление полей таблицы. Мы экономим ресурсы, за счет одного большого запроса, а не множества маленьких. Пример подобного вопроса приведен ниже: UPDATE `test` SET `price` = CASE WHEN `id` = 1 THEN 11 WHEN `id` = 2 THEN 22 ELSE `price` END, `title`…
-
MySQL. Как вывести фамилию и инициалы пользователя?
Очень удобно выводить инициалы пользователя вместе с его фамилией. Информативность повышается, а места занимается не много. При правильной структуре БД — имя, фамилия и отчество должны храниться в разных полях — поэтому следующий пример учитывает именно эту ситуацию. Итак, запрос для получения фамилии и первой буквы имени и отчества в разных полях: SELECT last_name, LEFT(first_name,1),…
-
MySQL. Обрезка данных при запросе с GROUP_CONCAT
Встретился со странным поведением — при запросе к MySQL с функцией GROUP_CONCAT, которая возвращала список всех телефонов за период времени данные хаотично обрезались. Т.е. строка приходила не полностью. Покопавшись, нашел и причину и решение. Надо просто исправить в my.cnf: group_concat_max_len=4096 … или выполнить запрос: SET GLOBAL group_concat_max_len=1024 * 4 Так или иначе мы устанавливаем предельную…