日期:2014-05-17  浏览次数:20970 次

Oracle中Case的使用
有一张表
VARCHAR UserName; //用户名 )、
NUMBER UserType; //类型 0普通用户 1是会员  


需求:我有一个功能是(查询) 已知用户名,查询用户的类型

Select case UserType where 0 then 普通用户 when 1 then 会员 end form 表 where UserName='用户名'

(现在有个问题 如果随便写个用户名 查不出任何数据 那么这条查询语句没有结果的,如何进行空行的判断?)

默认如果查询不到该用户的信息 我让UserType 为-1?
我发现使用: when UserType is null then -1 是无法得到数据的?该怎么写呢?

表中只有2条数据:用户名为(张三,李四)
(如果实现如下的数据):
Select case UserType is null where -1 end form 表 where UserName='王二哥' --这条语句是错误的

到底该怎么写呢?????????

------解决方案--------------------
select nvl((select usertype from table where username = '&1' ),-1) usertype from dual;
------解决方案--------------------
SQL code

Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>sqlplus test\password

SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 3月 19 13:30:32 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

请输入用户名:  test
输入口令:

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select nvl((select usertype from us where username = 'ls' ),-1) usertype fr
om dual;

  USERTYPE
----------
        -1

SQL>