擬似lsの実装
Posted feedbacks - SQL
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, "%");
|

ところてん
#4212()
Rating1/3=0.33
[ reply ]