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

MySQL команда за търсене в CSV (или подобен масив)

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

Единственото решение за намиране на дадена стойност в списък, разделен със запетая, е използването на регулярни изрази, които като цяло са грозни и бавни. Трябва да се справяте с крайни случаи, като например когато дадена стойност може или не може да бъде в началото или края на низа, както и до запетая.

SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';

Има други видове заявки, които са лесни, когато имате нормализирана таблица, но трудни със списъка, разделен със запетая. Примерът, който давате, за търсене на стойност, която е равна или по-голяма от критериите за търсене, е един такъв случай. Също така имайте предвид следното:

  • Как да изтрия един елемент от списък, разделен със запетаи?
  • Как да се уверя, че списъкът е в сортиран ред?
  • Какъв е средният брой стаи?
  • Как да се уверя, че стойностите в списъка са дори валидни записи? напр. какво ми пречи да въведа "1,2,банан"?

Ако не искате да създадете втора таблица, измислете начин да представите данните си с една стойност.

По-точно, трябва да кажа, че препоръчвам да представите данните си с една стойност на колона , а решението на Майк Атлас постига това.



  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 MIN/MAX връща правилната стойност, но не и информацията за свързания запис

  2. Как да подобрим INSERT INTO ... SELECT поведение на заключване

  3. MySql varchar промяна от Latin1 на UTF8

  4. Грешка във външния ключ на MySQL 1005 errno 150 първичен ключ като външен ключ

  5. SQL Вмъкване в първата празна колона в ред MySQL грешка