SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 13.12.2011 13:34:22

CRUS
Участник
Зарегистрирован: 13.12.2011
Сообщений: 2

Как найти в MySQL запись с фрагментом из строковой переменной

Есть строковая переменная $String. Ее содержимое заранее не известно.
Есть таблица БД table_sample со строковым полем SAMPLE. Записи сформированы зарание.

Надо узнать максимально быстро, есть ли запись в таблице, у которой SAMPLE является частью строки $String

К примеру
если $String = 1234567890abcdefg и SAMPLE = 7890ab, то это правильно

то есть не так: select * from table_sample where `SAMPLE` LIKE '%".$String."%'

а как то вот так: select * from table_sample where $String LIKE '%SAMPLE%'

Неактивен

 

#2 13.12.2011 14:16:32

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2423

Re: Как найти в MySQL запись с фрагментом из строковой переменной

В более общем виде через regexp можно, но здесь можно и locate'ом ограничиться.

Код:

mysql> create table t_5083_sample(SAMPLE varchar(80));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t_5083_sample values('7890ab');
Query OK, 1 row affected (0.00 sec)


mysql> insert into t_5083_sample values('789~0ab');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_5083_sample;
+---------+
| SAMPLE  |
+---------+
| 789~0ab |
| 7890ab  |
+---------+
2 rows in set (0.00 sec)

mysql> select * from t_5083_sample where locate(SAMPLE,'___7890ab___')>0;
+--------+
| SAMPLE |
+--------+
| 7890ab |
+--------+
1 row in set (0.00 sec)

Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 13.12.2011 19:43:26

CRUS
Участник
Зарегистрирован: 13.12.2011
Сообщений: 2

Re: Как найти в MySQL запись с фрагментом из строковой переменной

deadka написал:

В более общем виде через regexp можно, но здесь можно и locate'ом ограничиться.

СПАСИБО вроде это оно)

Неактивен

 

#4 01.05.2014 12:20:35

ВадимМалимонов
Участник
Зарегистрирован: 01.05.2014
Сообщений: 2

Re: Как найти в MySQL запись с фрагментом из строковой переменной

Добрый день!

У меня вопрос по схожей теме, но есть нюансы.

есть таблица типа:

table
----------------------------
id |   column1  |  column2
----------------------------
1 |  Монитор   |  monitor
2 |  RAM         |  ram
3 |  Цвет        |  color

есть переменная string, например
$str = 'monitor,ram';
- значение этой переменной заранее неизвестно и может меняться, но все слова перечислены через запятую, их может быть до 10 шт.

мне нужно сделать запрос типа
"SELECT column1 FROM table WHERE column2 IN ('{$str}')"

Прочитал, что IN работает только так:
..... WHERE column2 IN (1,2,3,4)"
или
..... WHERE column2 IN ('monitor','ram','color')".

в $str значения без кавычек. Тип поля column1 и column2 - VARCHAR.

Как можно правильно выполнить подобный запрос, может вместо IN использовать что-то другое?
Или придется писать функцию, которая переменную $str приведет из вида:
monitor,ram,color
к виду:
'monitor','ram','color' - но это крайний вариант.

Неактивен

 

#5 02.05.2014 12:35:52

ВадимМалимонов
Участник
Зарегистрирован: 01.05.2014
Сообщений: 2

Re: Как найти в MySQL запись с фрагментом из строковой переменной

Вопрос снят.

переменную $str привел к виду:
$str = '1,8,15,3';

, где значения - это id-шники из другой таблицы.

Неактивен

 

Board footer

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