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

Как да търсите стойност, разделена със запетая

Краткосрочно решение

Използвайте функцията FIND_IN_SET :

WHERE FIND_IN_SET('Queensland', csv_column)

...защото използването на LIKE със заместващи знаци от двата края е рисковано, в зависимост от това колко/малко съвпадения (и също така гарантира сканиране на таблицата). Изпълнението на LIKE със заместващи знаци от двете страни е наравно с REGEXP – това означава лошо.

Дългосрочно решение

Не съхранявайте стойности, разделени със запетая - използвайте правилна връзка много към много, включваща три таблици:

Неща

  • thing_id (първичен ключ)

Австралийски щати

  • State_id (първичен ключ)
  • Име на щат

Things_to_Auz_States

  • thing_id (първичен ключ, външен ключ към THINGS таблица)
  • State_id (първичен ключ, външен ключ към AUSTRALIAN_STATES таблица)

Ще ви трябват JOIN, за да извлечете данни от трите таблици, но ако искате да знаете неща като това колко са свързани с определено състояние или две конкретни състояния, това е правилният модел.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разрешения за създаване на тригер в mysql

  2. Как да прехвърля моята MySQL база данни на друг компютър?

  3. Заявката LEFT OUTER JOIN не връща очакваните редове

  4. Производителност на MySQL:Въведение в JOIN в SQL

  5. Странно поведение на SUM и CONCAT в MySql