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

MySQL търси 1,2,3,11,22,33 в полето

На първо място, използването на стойности, разделени със запетая, в поле е проблематично и трябва да помислите вместо това да ги съхранявате в отделна таблица. Тогава можете да получите записа по-ефективно:

select ...
from mainTable t
inner join valueTable v1 on v1.id = t.id and v1.value = 1
inner join valueTable v2 on v2.id = t.id and v2.value = 2
inner join valueTable v3 on v3.id = t.id and v3.value = 3

Ако това не е възможно, трябва да отидете по бавния начин за съвпадение на низове. За да съпоставите стойностите в разделен със запетая низ, можете да използвате like оператор:

... where
  concat(',', someField, ',') like '%,1,%' and
  concat(',', someField, ',') like '%,2,%' and
  concat(',', someField, ',') like '%,3,%'

Поставянето на разделител от двете страни на търсената стойност гарантира, че няма да получите фалшиви положителни резултати. Добавянето на запетаи преди и след стойността на полето гарантира, че можете да намерите първата и последната стойност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем при вмъкване на данни от csv в база данни mysql с неизвестен брой колони

  2. Изберете от множество таблици с laravel fluent builder на заявки

  3. Как да кача изображение в база данни с помощта на php скрипт?

  4. база данни от latin-1 до utf-8

  5. mysql фалшив избор