Трюки в SQL

31.07.2008

Данный пост пишу исключительно для себя, что бы не забыть то, что когда-то уже придумал. Ну или откуда-нибудь позаимствовал.

Трюк номер 1 – как выбрать записи по порядку который мы сами задаем. Т.е. если строки вставлены с идентификаторами “1 2 3”, то как можно выбрать их в порядке “3 1 2”. Все очень просто.

mysql> create database test;
Query OK, 1 row affected (0.02 sec)
mysql> use test;
Database changed
mysql> create table xxx(
    -> id bigint unsigned not null auto_increment primary key,
    -> name varchar(100) not null);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into xxx (name) VALUES ('Masha');
Query OK, 1 row affected (0.02 sec)
mysql> insert into xxx (name) VALUES ('Pasha');
Query OK, 1 row affected (0.00 sec)
mysql> insert into xxx (name) VALUES ('Dimon');
Query OK, 1 row affected (0.00 sec)
mysql> select * from xxx;
+----+-------+
| id | name  |
+----+-------+
|  1 | Masha |
|  2 | Pasha |
|  3 | Dimon |
+----+-------+
3 rows in set (0.00 sec)
mysql> select * from xxx order by locate(concat('.',id,'.'),'.3.1.2.');
+----+-------+
| id | name  |
+----+-------+
|  3 | Dimon |
|  1 | Masha |
|  2 | Pasha |
+----+-------+
3 rows in set (0.02 sec)

Все дело в этой LOCATE. Она выдает позицию (т.е. число, которое можно использовать как порядок в сортировке) вхождения подстроки .ЧИСЛО. в большой строке. Точки по бокам большой строки добавлены для того, что бы и крайние числа тоже попадали в результат.

Трюк номер 2 – как одним запросом в поле таблицы заменить определенную подстроку.

Еще проще

UPDATE таблица SET поле = REPLACE(поле, 'что ищем', 'на что меняем')

Кто знает еще хитрости – делитесь.


Комментирование этой статьи закрыто

Комментарии [4]

  1. Июл 31, 17:35 , max

    трюк 1 – ничего так, пойдет :)
    второй даже и не трюк вовсе, а стандартный запрос. Вот вывести результат в строку через запятую, думаю можно за трюк посчитать :) хотя как сделать это для мускла без временной таблицы я не знаю :(.

  2. Авг 14, 23:07 , Vassia

    кегль кода мелковат… Трудно читать…

  3. Авг 21, 00:50 , Олег Дорожко

    Интересная публикация.

    У самого часто возникала мысль сделать сайт, на котором публиковать простые примеры кодирования.
    Причем сделать базу знаний
    по SQL, PHP, C++, Java, Erlang, 1C да и html

  4. Окт 6, 00:53 , DYPA

    второй трюк понравился ;)

Комментирование этой статьи закрыто

Кто я


Возраст: 23
Профессия: заяц


Категории


Полезные ссылки


Стишок

Зайчик-зайчик, скок-поскок!
Н-нна тебе дробину в бок!
Не с капустой же мы будем
Жрать на Новый год пирог...

eu-shestakov.livejournal.com