如何在Oracle树形查询中为不同场景配置不同Font Awesome图标?
Oracle树形查询图标配置实现方案
一、按层级设置图标
直接用CASE语句结合层级字段(或Oracle原生LEVEL伪列)分支返回对应图标类即可,示例SQL如下:
SELECT t.id, t.name, t.level, -- 若用Oracle原生层级伪列则写LEVEL(大写) CASE WHEN t.level = 0 THEN 'fa fa-tree' WHEN t.level = 1 THEN 'fa fa-car' ELSE 'fa fa-battleship' -- 其他层级保留默认图标 END AS icon_class FROM your_table t CONNECT BY PRIOR t.id = t.parent_id START WITH t.parent_id IS NULL; -- 根节点条件根据你的表结构调整
如果用Oracle原生LEVEL伪列(默认根节点为LEVEL=1),只需把判断条件改成WHEN LEVEL = 1 THEN 'fa fa-tree'、WHEN LEVEL = 2 THEN 'fa fa-car',对应你的实际层级逻辑调整即可。
二、按叶子/非叶子节点设置图标
Oracle提供CONNECT_BY_ISLEAF伪列识别节点类型:值为1是叶子节点,值为0是非叶子节点。结合这个伪列用CASE实现图标切换:
SELECT t.id, t.name, CONNECT_BY_ISLEAF AS is_leaf, CASE WHEN CONNECT_BY_ISLEAF = 1 THEN 'fa fa-file' -- 叶子节点用文件图标 ELSE 'fa fa-folder' -- 非叶子节点用文件夹图标 END AS icon_class FROM your_table t CONNECT BY PRIOR t.id = t.parent_id START WITH t.parent_id IS NULL;
组合两种需求(可选)
如果需要同时结合层级和节点类型配置,嵌套CASE语句即可:
SELECT t.id, t.name, t.level, CONNECT_BY_ISLEAF AS is_leaf, CASE WHEN t.level = 0 THEN 'fa fa-tree' WHEN t.level = 1 THEN 'fa fa-car' ELSE CASE WHEN CONNECT_BY_ISLEAF = 1 THEN 'fa fa-file' ELSE 'fa fa-folder' END END AS icon_class FROM your_table t CONNECT BY PRIOR t.id = t.parent_id START WITH t.parent_id IS NULL;
注意:替换your_table为你的实际表名,id、parent_id为树形结构字段,根节点的START WITH条件根据业务调整。
内容的提问来源于stack exchange,提问作者Osman
相关产品推荐
相关产品推荐

