|
|
|
| Приветствую, уважаемые. Нужна ваша помощь.
В БД (mysql 4) есть поле с записями вида "Числа1^Числа2^Числа3".
Например:
4^0^0
^^1
0^4^
Нужно сделать запрос в базу:
Выводить записи в которых Числа1>3 и Числа2<5.
Какие будут мысли? | |
|
|
|
|
|
|
|
для: newii
(20.09.2008 в 12:23)
| | >Какие будут мысли?
Мысль будет одна. Изменить структуру БД.
Так чтобы числа хранились в виде чисел. | |
|
|
|
|
|
|
|
для: Trianon
(20.09.2008 в 12:47)
| | Я бы с удовольствием, но, к сожалению не могу. | |
|
|
|
|
|
|
|
для: newii
(20.09.2008 в 13:12)
| | Это примерно вот такая галиматья :) будет:
SELECT * FROM `test` WHERE CAST(SUBSTRING(`name`, LOCATE('^', `name`)+1, 1) AS SIGNED) > 3
AND CAST(SUBSTRING(`name`, LOCATE('^', `name`, LOCATE('^', `name`)+1)+1, 1) AS SIGNED) < 5
|
и то если 'число' односимвольное - 1 | |
|
|
|
|
|
|
|
для: Mehelson
(20.09.2008 в 13:46)
| | наверняка, можно написать и полный разбор. Запрос будет на полстраницы и работать будет полчаса. Зачем? | |
|
|
|
|
|
|
|
для: Trianon
(20.09.2008 в 15:07)
| | Абсолютно незачем!
Интересно стало :) | |
|
|
|
|
|
|
|
для: Mehelson
(20.09.2008 в 15:35)
| | Спасибо за наводку, получились такие конструкции:
Число1:
CAST(SUBSTRING(`free_time`, 1, LOCATE('^', `free_time`, 1)-1) AS SIGNED)
Число 2:
CAST(SUBSTRING(`free_time`, LOCATE('^', `free_time`, 1)+1, LOCATE('^', `free_time`, LOCATE('^', `free_time`, 1)+1)-1-LOCATE('^', `free_time`, 1)) AS SIGNED)
Число 3:
CAST(SUBSTRING(`free_time`, LOCATE('^', `free_time`, LOCATE('^', `free_time`, 1)+1)+1, LENGTH(`free_time`)-LOCATE('^', `free_time`, LOCATE('^', `free_time`, 1)+1)) AS SIGNED)
|
| |
|
|
|