1

VARCHAR フィールドで見つかった値を比較するのに問題があります。

製品のテーブルがあり、各製品にはボリュームがあります。ボリュームを VARCHAR フィールドに保存します。通常は数値 (30、40、200 など) ですが、複数のボリュームを持つ製品があり、そのデータは 30;60;80 のようにセミコロンで区切られて保存されます。

そのように複数のボリュームを保存することはお勧めできないことはわかっていますが、そのままで作業する必要があります。

製品のボリューム検索機能を実装しようとしています。検索した商品と同じかそれ以上のボリュームの商品も表示したいです。これは単巻製品では問題ありませんが、複数巻製品では問題となります。

例を挙げれば分かりやすいかもしれません: ボリューム フィールドに 30;40;70;80 がある製品があるとします。誰かがボリューム、たとえば 50 を検索した場合、その製品が表示されるようにします。

これを行うために、私は独自のカスタム MySQL 関数を作成することを考えていました (これまでにこれを行ったことはありません) が、誰かが別のソリューションを提供できるかもしれません。

下手な英語で申し訳ありませんが、質問を明確にしていただければ幸いです。

ありがとう。

4

1 に答える 1

1

最大値と比較するだけです。ボリュームは常に左から右へ昇順で保存されますか? その場合、最後のセミコロンの後の値と比較します (存在する場合)。SUBSTRING_INDEXを使用して最後の値を選択できます。

SELECT *
FROM products
WHERE CAST(SUBSTRING_INDEX(volume, ';', -1) AS UNSIGNED) >= 50
于 2010-03-18T19:12:58.243 に答える