[前][次][番号順一覧][スレッド一覧]

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]