Уважаемые программисты, подскажите пожалуйста логическое выражение "содержит" в php применимое для текстовых переменных?
Т. е. есть поле с кодом: МИ5467УН
Необходимо сделать запрос, человеческим языком означающий: если МИ5467УН содержит/начинается на "МИ" значит сделать то то....


Выражение "содержит" в php?
Автор dolphin, 16 февр. 2012 12:01
Сообщений в теме: 7
#1
Отправлено 16 Февраль 2012 - 12:01
#2
Отправлено 16 Февраль 2012 - 12:30
Функция strpos - поиск подстроки в другой строке.
Т.е. если $pos !== false то искомая подстрока найдена.
$mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // Заметьте, что используется ===. Использование == не даст верного // результата, так как 'a' находится в нулевой позиции. if ($pos === false) { echo "Строка '$findme' не найдена в строке '$mystring'"; } else { echo "Строка '$findme' найдена в строке '$mystring'"; echo " в позиции $pos"; }
Т.е. если $pos !== false то искомая подстрока найдена.
#3
Отправлено 17 Февраль 2012 - 05:53
Понял, спасибо. А есть ли возможность в запросах указывать фильтр?
#4
Отправлено 17 Февраль 2012 - 06:09
Допустим, из этого запроса
Поиск проходит по полю f1197 таблицы 102.
Можно ли в запросах указывать фильтр? Искать по полю f1197 таблицы 102 используя фильтр...
$sqlQuery = "SELECT count(*) as cnt, sum(f1202) as summa FROM ".DATA_TABLE."102 WHERE f1197>="555"
Поиск проходит по полю f1197 таблицы 102.
Можно ли в запросах указывать фильтр? Искать по полю f1197 таблицы 102 используя фильтр...
#5
Отправлено 17 Февраль 2012 - 09:16
Если вы про сохранненый в программе фильтр, то разумеется его никак в SQL запросе не укажешь, такого нет в описании языка. Можно только вручную задать то же самое условие, которое используется в фильтре.
#6
Отправлено 17 Февраль 2012 - 09:28
Во во, хотелось бы поточнее про условие! 
Как к этому запросу:
Применить фильтр тот что Вы выше написали, а именно составить такой запрос:
Из таблицы 102, где поле 1197 больше или равно 555, А ТАКЖЕ СОДЕРЖИТ 888 взять сумму поля 1202 и посчитать кол-во строк....
Получается, что так:

Как к этому запросу:
$sqlQuery = "SELECT count(*) as cnt, sum(f1202) as summa FROM ".DATA_TABLE."102 WHERE f1197>="555"
Применить фильтр тот что Вы выше написали, а именно составить такой запрос:
Из таблицы 102, где поле 1197 больше или равно 555, А ТАКЖЕ СОДЕРЖИТ 888 взять сумму поля 1202 и посчитать кол-во строк....
Получается, что так:
$sqlQuery = "SELECT count(*) as cnt, sum(f1202) as summa FROM ".DATA_TABLE."102 WHERE f1197>="555" AND strpos(f1197, 888) !== false
#7
Отправлено 17 Февраль 2012 - 09:47
Что-то я не понял, так вам в PHP нужно условие задать, или все-таки в SQL запросе? Это абсолютно разные вещи. В SQL для этого есть оператор LIKE: http://phpclub.ru/my...-functions.html
f1197 LIKE "%abc%" - f1197 содержит "abc" в любом месте слова.
f1197 LIKE "%abc%" - f1197 содержит "abc" в любом месте слова.
#8
Отправлено 17 Февраль 2012 - 09:54
Спасибо ОГРОМНЕЙШЕЕ!!! Получилось!
Я же говорил что булка в программировании, поэтому и не смог отличить mysql от php )))
Я же говорил что булка в программировании, поэтому и не смог отличить mysql от php )))
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных