syat #6281(2008/05/10 15:50 GMT) [ SQL ] Rating0/0=0.00
SQLは文字列操作が苦手だけど、無理してやってみました。おそらくMySQL以外では動きません。他のDBでは関数等を読み替えてください。
インデックスを張ってやれば、件数が増えてもパフォーマンスが期待できるところが強みです。 検索はSQLを使い、文字列の加工などは呼び元の高級言語(CとかJavaとか)で行うというのが王道かと。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-- パス一覧の作成 create table fs(path char(80) primary key); insert into fs values("aaa/bbb"); insert into fs values("aaa/ccc"); insert into fs values("aaa/ddd/eee"); insert into fs values("aaa/ddd/fff"); insert into fs values("bbb/ddd/eee"); -- "aaa/" の検索 select distinct substr( path, length(dir) + 1, case instr(path, "/") when 0 then 80 else (instr(path, "/")) end ) ls from fs, (select "aaa/" dir) _dir where path like concat(dir, "%"); -- "aaa/ddd/" の検索 select distinct substr( path, length(dir) + 1, case instr(path, "/") when 0 then 80 else (instr(path, "/")) end ) ls from fs, (select "aaa/ddd/" dir) _dir where path like concat(dir, "%");
Rating0/0=0.00-0+
[ reply ]
syat
#6281()
[
SQL
]
Rating0/0=0.00
SQLは文字列操作が苦手だけど、無理してやってみました。おそらくMySQL以外では動きません。他のDBでは関数等を読み替えてください。
インデックスを張ってやれば、件数が増えてもパフォーマンスが期待できるところが強みです。 検索はSQLを使い、文字列の加工などは呼び元の高級言語(CとかJavaとか)で行うというのが王道かと。
Rating0/0=0.00-0+
[ reply ]