oracle里面的一些特殊查询

当字符串为空时,在where 使用 is null来判断。

当字符串不为空时,在where 使用 is not null来判断。

例如:

create table test
(
   stuno number(10) primary key,
   stuname varchar2(50)
)
insert into test(stuno) values(10)
insert into test(stuno,stuname) values(11,' ')

select * from test where stuname is null才会取到所有值。

而select * from test where stuname=''不行。


Oracle中处理不区分大小写查询的处理

select *
  from (SELECT

               t.yhid,//这里的yhid还不变,用于列表的显示,显示的结果还是大小写都有
               t.bmbh,
               t.bmmc,
               t.xm,
               t.yhmm,
               t.sfzh,
               t.jyhm,
               t.sjhm,
               lower(t.yhid) lower_yhid //在最后一列加了重新对yhid列出一次,用于后面的查询条件,
          FROM USER_INFO T) a
 WHERE 1 = 1
   and lower_yhid like '%lgr%'//这里的'%lgr%'在java中进行了小写处理 yhid.tolower()


ORA-00942: 表或试图不存在

郁闷:powerdesigner 生成oracle的建表脚本,但是对生成的表不能进行 insert、exp、update、drop 报ORA-00942: 表或试图不存在 异常,本以为动了oracle哪里的配置导致的,在网上找了很多帖子——未果!百般无奈下删除了用户 ……drop user lizhiyu cascade;

    不妥:用powerdesigner 生成的oracle的建表脚本重新建库,结果还是一样。只能仔细看下表结构,建表语句如下:

        -- Create table
create table s
(
  "sid"      NUMBER not null,
  "sname"    VARCHAR2(20),
  SEX      VARCHAR2(2),
  "birthday" DATE
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );

 

熟悉点数据库的同志们就会发现问题,打开powerdesigner生成的脚本内容如下:

create table "s"  (
   "sid"                NUMBER                          not null,
   "sname"              VARCHAR2(20),
   "sex"                VARCHAR2(2),
   "birthday"           DATE,
   constraint PK_S primary key ("sid")
);

所有的表名和列明如果是小写字母的加上了双引号

 虽然数据库的表名和字段名不区分大小写但是有双引号和没有双引号就是两回事儿了。双引号怎么来的?powerdesigner里设计字段名时候以小写字母命名 导出sql脚本是会在小写字母上加双引号!!!导致oracle建表成功但是操作不了!

    琢磨:既然能建立就一定能操作啊,索性,试了下 drop table “S” ,恩 果然好使,去掉ddl语句中的所有双引号,问题解决。

owerDesigner脚本生成带引号问题(oracle)

用PowerDesigner生成的sql脚本,在PL/SQL中查询时,总是提示“表或视图不存在”PowerDesigner脚本生成带引号问题

    用PL/SQL自带的SQL查询是却存在,问题检查下来是因为脚本生成的时候,表明和列是带双引号的。 

    使用PowerDesigner脚本生成数据库时,表名一般会带引号。其实加引号是PL/SQL的规范,数据库会严格按照“”中的名称建表,如果没有 “”,会按照ORACLE默认的设置建表(DBASTUDIO里面),默认是全部大写,这样,在ORACLE数据库里的字段就如“Column_1”,如果你把引号去掉,ORACLE自动默认为全部大写,即“COLUMN_1”,所以不必担心,这段SQL在PL/SQL中执行的时候是没有任何问题的,如果不加引号,在PL/SQL会自动识别为大写。 
    
  在powerdesigner 12.5或15中,选择Database->Edit   current   DBMS...,选择Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为 “Determines   if   the   case   sensitivity   for   identifiers   is   managed   using   double   quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,如下图手指向的位置改为“No”,点击确定。在弹出的确认对话框中点击确认

Oracle 分页算法两则

-- Oracle 分页算法一   

select * from (   

       select page.*,rownum rn from (select * from help) page    

       -- 20 = (currentPage-1) * pageSize + pageSize   

       where rownum <= 20   

)   

-- 10 = (currentPage-1) * pageSize   

where rn > 10;     

-- Oralce 分页算法二   

-- 20 = (currentPage-1) * pageSize + pageSize   

select * from help where rownum<=20   

minus    

-- 10 = (currentPage-1) * pageSize   

select * from help where rownum<=10;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值