- 要在select 语句中,对数值使用if-else操作的话,可以使用case表达式完成结果集查询(oracle中常用decode函数,更为高效)
1.表结构如下(随便找个表演示)
CREATE TABLE `sys_menu` (
`menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
`menu_name` varchar(50) NOT NULL COMMENT '菜单名称',
`parent_id` bigint(20) DEFAULT '0' COMMENT '父菜单ID',
`order_num` int(4) DEFAULT '0' COMMENT '显示顺序',
`url` varchar(200) DEFAULT '#' COMMENT '请求地址',
`target` varchar(20) DEFAULT '' COMMENT '打开方式(menuItem页签 menuBlank新窗口)',
`menu_type` char(1) DEFAULT '' COMMENT '菜单类型(M目录 C菜单 F按钮)',
`visible` char(1) DEFAULT '0' COMMENT '菜单状态(0显示 1隐藏)',
`perms` varchar(100) DEFAULT NULL COMMENT '权限标识',
`icon` varchar(100) DEFAULT '#' COMMENT '菜单图标',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) DEFAULT '' COMMENT '备注',
PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2003 DEFAULT CHARSET=utf8 COMMENT='菜单权限表'
2.使用case表达式对menu_id进行演示
select
menu_name,menu_id,
case
when menu_id <= 100
then 'small'
when menu_id >= 500
then 'big'
else 'ok'
end as idstatus
from
sys_menu ;
- 效果如下
注意点:
如果没有使用else,那么不满足条件的将会返回null