SQLでこれを処理する正しい方法は、複数値のプロパティ用に別のテーブルを追加することです。複数の離散値を単一の列に格納することは、リレーショナルモデルに反します。ノーノーを意図しているため、SQL言語でのサポートはほとんどありません。
カンマ区切りのリストで特定の値を見つけるための唯一の回避策は、一般的に醜くて遅い正規表現を使用することです。値が文字列の先頭または末尾、およびコンマの横にある場合とない場合など、エッジケースに対処する必要があります。
SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';
正規化されたテーブルがある場合は簡単ですが、コンマ区切りのリストでは難しいクエリの他のタイプがあります。検索基準以上の値を検索する例は、そのようなケースの1つです。また、考慮してください:
- カンマ区切りのリストから1つの要素を削除するにはどうすればよいですか?
- リストが並べ替えられていることを確認するにはどうすればよいですか?
- 平均部屋数はいくつですか?
- リスト内の値が有効なエントリであることを確認するにはどうすればよいですか?例えば。 「1,2、banana」に入らないようにするにはどうすればよいですか?
2番目のテーブルを作成したくない場合は、単一の値でデータを表す方法を考えてください。
もっと正確に言うと、データを列ごとに単一の値で表すことをお勧めします。 、そしてマイクアトラスのソリューションはそれを達成します。