Правилният начин да се справите с това в SQL е да добавите друга таблица за свойство с много стойности. Противно на релационния модел е да се съхраняват множество отделни стойности в една колона. Тъй като е предназначено да бъде не-не, има малка поддръжка за него в езика SQL.
Единственото решение за намиране на дадена стойност в списък, разделен със запетая, е използването на регулярни изрази, които като цяло са грозни и бавни. Трябва да се справяте с крайни случаи, като например когато дадена стойност може или не може да бъде в началото или края на низа, както и до запетая.
SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';
Има други видове заявки, които са лесни, когато имате нормализирана таблица, но трудни със списъка, разделен със запетая. Примерът, който давате, за търсене на стойност, която е равна или по-голяма от критериите за търсене, е един такъв случай. Също така имайте предвид следното:
- Как да изтрия един елемент от списък, разделен със запетаи?
- Как да се уверя, че списъкът е в сортиран ред?
- Какъв е средният брой стаи?
- Как да се уверя, че стойностите в списъка са дори валидни записи? напр. какво ми пречи да въведа "1,2,банан"?
Ако не искате да създадете втора таблица, измислете начин да представите данните си с една стойност.
По-точно, трябва да кажа, че препоръчвам да представите данните си с една стойност на колона , а решението на Майк Атлас постига това.