Mysql
 sql >> база данни >  >> RDS >> Mysql

Търсене в масив от публикации в стойност на колона, разделена със запетая

Решение 1:

Както коментира @Jens, е лош дизайн на DB да се съхраняват стойности като CSV. Така че първото решение би било да промените дизайна на вашата DB, тъй като всъщност не знам какво съхранявате и каква е целта на вашия DB/код I не мога да напиша схема или да даде някакво смислено предложение.

Решение 2:

Използвайте MySQL find_in_set функция.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Решение 3:

Можете да използвате LIKE оператор. (Някои членове вероятно ще ме убият, че съм го предложил, но ако не искате да промените дизайна на вашата DB - това е творческа опция).

Нека проверим следния код:

SELECT id FROM table WHERE filter_data LIKE '%2,%'

Проблемът е, че ще върне идентификатора на поле с 22, в колоната на filter_data. Следователно ще трябва да промените данните в тази колона, така че , ще се появи също като първи и последен знак. Например:

id | filter_data   |
---|---------------
1  |,2,3,45,67,4,  |
2  |,2,3,55,33,5,7,|

И сега можете да направите следното:

SELECT id FROM table WHERE filter_data LIKE '%,2,%'

Ако имате няколко „филтъра за търсене“, можете да комбинирате LIKE s с OR оператор.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MYSQL многоизмерен масив

  2. MySQL:SUM() с JOIN връща неправилни стойности

  3. Извикване на изглед на база данни в Yii с помощта на Active Record

  4. MySQL:Добавете ограничение, ако не съществува

  5. mysql ГРЕШКА 2002 (HY000):Не може да се свърже с локален MySQL сървър чрез сокет '/var/run/mysqld/mysqld.sock' (2)