SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.11.2016 15:18:13

iskiz
Участник
Зарегистрирован: 21.08.2012
Сообщений: 7

Переменная в SELECT обращении

В обращении есть условия такого вида(часть строки):

SELECT * FROM ... WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '".$price."', -1 ) , '||', 1 )>=".$min." AND SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '".$price."', -1 ) , '||', 1 )<=".$max."


Дело в том, что сабстрингов довольно много строится в запросе и половина из них имеет одинаковый вид. И тут появился вопрос. Возможно ли объявить переменную и далее использовать её?
Попробовал так:
SELECT * FROM ... WHERE @price:=SUBSTRING_INDEX( SUBSTRING_INDEX( xfields, '".$price."', -1 ) , '||', 1 )>=".$min." AND @price<=".$max."

Результатов не получил.

Спасибо за помощь.

Неактивен

 

#2 29.11.2016 15:32:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Переменная в SELECT обращении

а смысл?
сервер сам сообразит, что можно однократно вычислять некоторые куски

а в вашем варианте нет гарантии, что вычисления будут проходить слева направо, т.е. @price изначально null и второе условие заведомо не верное, следовательно и первое можно не вычислять.

с переменными есть нюансы и нужно использовать их с внимательностью

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson