Как сделать?

DarkFighter

Новичок
Как сделать?

Есть таблица "tbl", поля:
`id` int(10) unsigned NOT NULL default '0',
`pos` text
`total` tinyint(3) unsigned NOT NULL default '0',


в поле `pos` идут данные вида ("[44545,108867,-2020,0]", "[[44368,107440,-2032,-1032],[46080,108968,-2032,-1032],[44400,110644,-2032,-1032],[42988,109652,-2032,-1032],[43004,108928,-2032,-1032]]" и др.

Как можно сделать выборку из `pos`, не используя "SELECT *" и "eregi()", где, скажем, первое число>40000, второе -- <100000, а третье и четвертое - любые числа?
 

DarkFighter

Новичок
svetasmirnova,
SELECT * FROM `tbl` WHERE REGEXP `pos` "[0-9]{1,}......." -- а как этот [0-9] потом сравнивать?
 

svetasmirnova

маленький монстрик
Строка, что ты привёл. Что получить надо? Её целиком, основываясь на первой группе [44545,108867,-2020,0] или что-то ещё?
 

DarkFighter

Новичок
svetasmirnova,
мне надо получить
из $x;$x1;$y;$y1
получить эту строку, т.е.
Код:
$x>44545 && $x1<44545
и
Код:
$y>108867 && $y1<108867
а последние два числа - любые
 

svetasmirnova

маленький монстрик
Но если четвёрка чисел одна. то регулярки не нужны и можно что-то на основе этого сделать:
[sql]
mysql> select * from tbl where (substring_index(pos, ';', 1) > 44545) and (substring_index(substring_index(pos, ';', -3), ';', 2) < 44545);
[/sql]
 
Сверху