Рубрика: "Программирование"
MYSQL, работа со строками при помощи SUBSTRING_INDEX
Функция MySQL SUBSTRING_INDEX(str,delim,count) позволяет выбирать определенные участки строк в SQL-запросах. В параметрах передается:
- str – обрабатываемая строка,
- delim – разделитель частей,
- count – количество выбираемых частей.
Пример:
SUBSTRING_INDEX('www.example.com', '.', 2)
В данном случае функция вернет 'www.example', т.е. строка будет разбита на части, разделенные '.' и будут взяты две части.
SUBSTRING_INDEX('www.example.com', '.', -2)
Вернет 'example.com', аналогично примеру выше, но будут взяты две части с конца строки.
Но все вышеописанное можно найти в мануале MySQL. А вот примера, как взять одну часть из середины строки – нет. И хоть в этом не ничего сложного, но приведу его в качестве шпаргалки:
SUBSTRING_INDEX(SUBSTRING_INDEX('www.example.com', '.', 2), '.', -1)
Тут функция вернет 'example'. Сначала будет выполнен вложенный запрос, который вернет 'www.example', а затем основной запрос, который и вернет 'example'.
Все
Ускорение PHP: apc и memcache для сессий
В этой заметке я расскажу об использовании apc, а также о memcache для сессий в PHP.
31 октября и лишние секунды
Долго бился и никак не мог понять, почему 31го октября в сутках 90000 секунд, когда в обычном дне 86400. Потом вспомнил, что в этот день переводят часы. А ведь хотел уже баг PHP строчить.
mktime(23,59,59,10,31,2010)-mktime(0,0,0,10,31,2010) = 89999
MySQL, profiling
Профайлинг - еще одна удобная штука в MySQL. Доступна с версии 5.0.37. Вот как это выглядит:
MySQL, found_rows()
Удобная функция в том случае, если надо получить лишь несколько строк из таблицы, но интересно общее число записей.
FOUND_ROWS()
Возвращает количество строк, которые возвратила бы последняя команда SELECT SQL_CALC_FOUND_ROWS ... при отсутствии ограничения оператором LIMIT.
mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
Второй вызов команды SELECT возвратит количество строк, которые возвратила бы первая команда SELECT, если бы она была написана без выражения LIMIT. Отметим, что, хотя при использовании команды SELECT SQL_CALC_FOUND_ROWS ..., MySQL должен пересчитать все строки в наборе результатов, этот способ все равно быстрее, чем без LIMIT, так как не требуется посылать результат клиенту.
Функция SQL_CALC_FOUND_ROWS появилась в MySQL 4.0.0.