mysql:6845
From: Koji Yamamoto <Koji Yamamoto <yamamoto@xxxxxxxxxx>>
Date: Sun, 12 Jan 2003 18:31:57 +0900
Subject: [mysql 06845] Re: 数字以外の文字を含む範囲検索
山本です。 > ちょっと変な感じがします。 > 1234から1240までの商品はAAAAである。 > と言うことを一つのレコードで表現する・・・のは。 > > ひょっとすると色違い、サイズ違いの商品があってもそれらは同じ商品としてくくっ > ている、ということなのかなあ。 > > でもサイズとか何らかの違いを示すデータはないんでしょうか。 > > データそのものがよく判らないです。 説明が少なく、申し訳ありません。 まさにその通りで、色違いなどで同じ商品としてくくっています。 「同じ商品」といっていますが「同じ商品名」ということです。 > この場合、たとえばDD9900からDD9950の場合、DD99の前の部分は共通である、という > ことですか? > つまり、仮にDD98という文字列を前に持っている場合、それは明らかに違う商品であ > る。 > という約束事になっているのでしょうか。 > なんらかの、一目して識別できるルールがあると思いますが。 先ほどの例でいうと、DD9900〜DD9950 は同じ商品だが、 DD9951以降は商品名が違うものになります。 明らかに商品が変わる場合、masahiko さんのご指摘通り、 DD98 などになります。 > 初めの部分で、共通の文字列をその商品に設定していれば、仮に > DD9900 DD9950 > 上記でDD99が共通の約束事であれば > SELECT hin_name FROM tbl_hin WHERE hin_fr like 'DD99%' > これでOKだと思います。 LIKE を使うと、上の例でいうところの商品名の違う「DD9951」まで 拾ってしまうので、LIKE演算子は使えません。。。 やはりアクマでも範囲検索になってしまうのです。 今思いついた方法ですが、プログラム上で文字と数字の分岐点で分け、 その分岐位置を持っておいて、MySQLのCONCAT と SUBSTRINGで範囲検索が 可能かな?という気もしましたが・・・。 ┌【 山本浩二 / YAMAKOU 】―――――――♪ | | mailto : yamamoto@xxxxxxxxxx | |■■|■■■|■■|■■■|■■|■■■| |||||||||||||||||||||| └┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘
6842 2003-01-12 17:30 [Koji Yamamoto <yamam] 数字以外の文字を含む範囲検索 6843 2003-01-12 18:00 ┣["3web" <dvh52252@xxx] -> 6845 2003-01-12 18:31 ┃┗[Koji Yamamoto <yamam] 6846 2003-01-12 19:37 ┃ ┣["3web" <dvh52252@xxx] 6852 2003-01-13 14:23 ┃ ┗[Hiromi Kurita <youji] 6844 2003-01-12 18:20 ┣[Shinya Kawaji <kawaj] 6853 2003-01-13 23:35 ┃┗[Koji Yamamoto <yamam] 6855 2003-01-14 02:03 ┃ ┗[とみたまさひろ <tomm] 6851 2003-01-13 13:31 ┗["3web" <dvh52252@xxx] 6854 2003-01-13 23:49 ┗[Koji Yamamoto <yamam]