Перейти к содержимому


Выражение "содержит" в php?


Сообщений в теме: 7

#1 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 16 Февраль 2012 - 12:01

Уважаемые программисты, подскажите пожалуйста логическое выражение "содержит" в php применимое для текстовых переменных?

Т. е. есть поле с кодом: МИ5467УН

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

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2012 - 12:30

Функция strpos - поиск подстроки в другой строке.

$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);
// Заметьте, что используется ===.  Использование == не даст верного
// результата, так как 'a' находится в нулевой позиции.
if ($pos === false) {
	echo "Строка '$findme' не найдена в строке '$mystring'";
} else {
	echo "Строка '$findme' найдена в строке '$mystring'";
	echo " в позиции $pos";
}

Т.е. если $pos !== false то искомая подстрока найдена.

#3 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 17 Февраль 2012 - 05:53

Понял, спасибо. А есть ли возможность в запросах указывать фильтр?

#4 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 17 Февраль 2012 - 06:09

Допустим, из этого запроса

	  $sqlQuery = "SELECT count(*) as cnt, sum(f1202) as summa FROM ".DATA_TABLE."102 WHERE f1197>="555"

Поиск проходит по полю f1197 таблицы 102.

Можно ли в запросах указывать фильтр? Искать по полю f1197 таблицы 102 используя фильтр...

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Февраль 2012 - 09:16

Если вы про сохранненый в программе фильтр, то разумеется его никак в SQL запросе не укажешь, такого нет в описании языка. Можно только вручную задать то же самое условие, которое используется в фильтре.

#6 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 17 Февраль 2012 - 09:28

Во во, хотелось бы поточнее про условие! :)

Как к этому запросу:
$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 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Февраль 2012 - 09:47

Что-то я не понял, так вам в PHP нужно условие задать, или все-таки в SQL запросе? Это абсолютно разные вещи. В SQL для этого есть оператор LIKE: http://phpclub.ru/my...-functions.html

f1197 LIKE "%abc%" - f1197 содержит "abc" в любом месте слова.

#8 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 17 Февраль 2012 - 09:54

Спасибо ОГРОМНЕЙШЕЕ!!! Получилось!

Я же говорил что булка в программировании, поэтому и не смог отличить mysql от php )))





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных